javascript基礎(事件的繫結)(三十四)
1.事件的繫結:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload = function(){
var btn01 = document.getElementById("btn01");
//為按鈕繫結一個單擊響應函式
/*btn01.onclick = function(){
alert(1);
};
//再為按鈕繫結一個單擊響應函式
btn01.onclick = function(){
alert(2);
};*/
/*
* 使用 物件.事件 的形式不能同時為一個元素的同一個事件繫結多個處理函式,
* 如果繫結了多個,則後邊的會將前邊的覆蓋掉
*
* 如果需要同時為一個事件繫結多個響應函式,則可以使用
* addEventListener()這個方法來繫結響應函式
* 引數:
* 1.要繫結的事件(字串 不要on)
* 2.回撥函式(事件觸發時,該函式將會執行)
* 3.是否在捕獲階段觸發事件(都傳false)
*
* 使用這種方式可以同時為一個事件繫結多個響應函式,
* 響應函式按照繫結的順序執行
*
* 該方法不支援IE8及以下的瀏覽器
* 在這些瀏覽器中需要使用 attachEvent()方法來實現相同的功能
*/
/*btn01.addEventListener("click",function(){
alert(1);
},false);
btn01.addEventListener("click",function(){
alert(2);
},false);
btn01.addEventListener("click",function(){
alert(3);
},false);*/
/*
* attachEvent()
* - 引數:
* 1.事件的型別(字串 要on)
* 2.回撥函式
*
* attachEvent()
* - 可以同時為一個事件繫結多個響應函式,但是它的執行順序不一定
* ie9 ie10 先繫結先執行
* ie8 後繫結先執行
*
* 這個方法只支援IE10及以下的瀏覽器
*/
/*btn01.attachEvent("onclick" , function(){
alert(1);
});*/
/*btn01.attachEvent("onclick" , function(){
alert(2);
});
btn01.attachEvent("onclick" , function(){
alert(3);
});*/
/*
* 在正常瀏覽器中使用addEventListener()來繫結
* 它的響應函式中的this就是繫結事件的物件
* 而在IE中,使用的是attachEvent()來繫結的事件
* 而它的響應函式中的this是window
*/
bind(btn01 , "click" , function(){
alert(this);
});
};
/*
* 自定義一個函式,來相容所有的瀏覽器
* 引數:
* obj 要繫結事件的物件
* eventStr 事件的字串,不要on
* callback 回撥函式,事件觸發時呼叫的函式
*/
function bind(obj , eventStr , callback){
if(obj.addEventListener){
//如果是正常瀏覽器
obj.addEventListener(eventStr , callback , false);
}else{
//IE8
/*
* attachEvent()中的回撥函式的this是window,需要修改為obj
* this是誰由函式的呼叫方式決定
* 1.以函式的形式呼叫,this是window
* 2.以方法的形式呼叫,this是呼叫方法的物件
* 3.以建構函式的形式呼叫,this是新建立的物件
* 4.使用call和apply呼叫時,this是第一個引數
*/
obj.attachEvent("on"+eventStr , function(){
//在attchEvent()中不傳遞callback而是傳遞一個匿名函式
//這樣在事件觸發時,瀏覽器不會呼叫callback而是呼叫匿名函式
//在匿名函式中來呼叫回撥函式
callback.call(obj);
});
}
}
</script>
</head>
<body>
<button id="btn01">點我一下</button>
</body>
</html>
相關文章
- JavaScript 事件繫結JavaScript事件
- 前端基礎之原生js事件繫結案例前端JS事件
- JavaScript學習13:事件繫結JavaScript事件
- WPF 繫結基礎
- 【JS基礎】DOM,BOM,事件繫結,ajax,跨域,儲存JS事件跨域
- JavaScript之坑了我--事件繫結原理JavaScript事件
- javascript事件基礎知識JavaScript事件
- JavaScript基礎之事件eventJavaScript事件
- WPF 基礎MvvM繫結的使用MVVM
- javascript基礎(事件的委派)(三十三)JavaScript事件
- javascript基礎(事件的冒泡)(三十二)JavaScript事件
- 繫結事件事件
- 事件繫結事件
- javascript基礎(事件物件)(三十一)JavaScript事件物件
- javascript基礎(滾輪的事件)(三十七)JavaScript事件
- javascript基礎(事件的傳播)(三十五)JavaScript事件
- js on繫結事件JS事件
- jQuery繫結事件jQuery事件
- React事件繫結的方式React事件
- JavaScript學習筆記10: 事件繫結&監聽JavaScript筆記事件
- JavaScript基礎總結JavaScript
- 【總結】Javascript基礎JavaScript
- .NET基礎之資料繫結
- javascript基礎(鍵盤事件)(三十八)JavaScript事件
- JS的事件繫結和事件流模型JS事件模型
- [JavaScript] 事件委託以及 Vue 列表迴圈事件繫結的效能最佳化JavaScript事件Vue
- 前端基礎 — Web事件總結前端Web事件
- javascript事件處理函式繫結簡單介紹JavaScript事件函式
- 繫結自定義事件事件
- v-on 繫結事件事件
- Vue事件繫結原理Vue事件
- Hooks與事件繫結Hook事件
- 2.事件繫結事件
- JSX繫結事件JS事件
- JS-事件繫結JS事件
- java基礎:多型(動態繫結)Java多型
- 【JavaScript的基礎知識總結】JavaScript
- 最全JavaScript基礎總結JavaScript