1. 程式人生 > 其它 >事件-JavaScript入門基礎(014)

事件-JavaScript入門基礎(014)

技術標籤:JavaScriptjavascriptjqueryhtml

滑鼠事件:

事件描述
onclick單擊元素
oncontextmenu右鍵彈出選單
ondbclick雙擊元素
onmousedown元素上按下滑鼠鍵
onmouseenter滑鼠指標移動到元素上
onmouseleave滑鼠移動到元素外
onmousemove滑鼠指標在元素上移動
onmouseover滑鼠指標移動到一個元素或其子元素

鍵盤事件:

事件描述
onkeydown按下一個鍵
onkeypress按下並彈起按鍵
onkeyup釋放按鍵
onerror載入外部檔案錯誤
onload載入物件
onresize調整檢視大小
onscroll滾動條

表單事件:

事件描述
onblur失去焦點
onchange狀態變化
onfocus獲得焦點
onreset重置表單
onselect選擇文字
onsubmit提交表單

以上是JavaScript中的常用事件。

事件處理器:

它是JavaScript檢測到一個特定事件時所執行的一段程式碼。

內聯處理器:

<input type="button" value="tip" onclick="javascript:alert('你單擊了我');">

通常就是直接在事件中直接處理的。可以明確寫javascript:,也可以省略。

<inputtype="button"value="tip"onclick="alert('你單擊了我');">

作為DOM物件的屬性的事件處理器:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script>        window.onload(function () {
var button1 = document.getElementById('btn1'); button1.onclick = function () { alert("你單擊了我"); } });</script></head><body> <input type="button" value="tip" id="btn1"></body></html>

以上程式碼,我們可以看出,頁面中有一個按鈕,我們需要給這個按鈕新增一個onclick單擊事件,我們可以在頁面載入函式window.onload中,先獲取按鈕物件,然後給物件的onclick事件,新增一個匿名處理函式,函式中只有一個處理操作,就是彈出提示框。

如果不適用匿名函式,使用具名函式也是可以的。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script>        function sayHello() {            alert('你單擊了我。');        }        window.onload = function () {            var button1 = document.getElementById('btn1');            button1.onclick = sayHello;        }</script></head><body>    <input type="button" id="btn1" value="按鈕"></body></html>

這裡需要記住,在給button1物件的onclick事件賦值處理函式時,只需要賦值函式名稱即可,不需要帶括號,因為帶括號意味著執行函式體的程式碼。

使用addEventListener()方法:

當我們需要給一個元素新增多個事件處理器時,就需要使用這個方法了。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script>        function f1() {            alert("我處理一部分");        }
        function f2() {            alert("我處理另一個部分");        }        window.onload = function () {            var button1 = document.getElementById('btn1');            button1.addEventListener('click',f1);            button1.addEventListener('click',f2);        }</script></head><body>    <input type="button" id="btn1" value="多處理函式"></body></html>

這裡需要注意一點,就是addEventListener方法中,對事件的引數不需要帶on,比如按鈕的單擊事件是onclick,引數1新增時,只需要寫click,就可以了。你可以這樣理解,把事件中的on去掉,就是引數1。

從上面程式碼中,可以看到,我們可以對一個按鈕添加了兩個處理函式,分別處理不同的內容。

當我們需要對新增的多餘處理函式,移除時,可以這樣:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script>        function f1() {            alert("我處理一部分");        }
        function f2() {            alert("我處理另一個部分");        }        window.onload = function () {            var button1 = document.getElementById('btn1');            button1.addEventListener('click',f1);            button1.addEventListener('click',f2);                        var button2 = document.getElementById('btn2');            button2.onclick = function () {                var button1 = document.getElementById('btn1');                button1.removeEventListener('click',f1);                button1.removeEventListener('click',f2);            }        }</script></head><body>    <input type="button" id="btn1" value="多處理函式">    <input type="button" id="btn2" value="移除"></body></html>

以上程式碼,我們通過移除,就可以動態的把button1物件的全部處理時間函式,都拿掉了。

event物件:

在鍵盤事件中,很多時候我們需要知道使用者具體按下了什麼鍵,可以通過event物件獲得。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script>
        function myFunc(event) {           var key1 = event.keyCode;           if(key1 == 27)           {               alert('你按下了esc鍵');           }        }        window.onload = function () {            var input1 = document.getElementById('text1');            input1.addEventListener('keydown',myFunc);        }</script></head><body>    <input type="text" id="text1"></body></html>

以上程式碼中,有一個文字輸入框,我們為其添加了一個onkeydown事件,處理函式中,判斷當按下esc鍵時,彈出提示框。event物件的keyCode屬性獲取按鍵碼,27代表esc鍵。

事件的發生順序:

當點選滑鼠按鍵時,mousedown,mouseup和click,是按照什麼順序發生的呢?

mousedown和mouseup事件都在click事件之前發生。

下節我們分享關於邏輯控制的內容。


圖片