JavaScript学习总结4--事件绑定

所谓事件,就是指我们在页面上的一些交互操作,比如单击鼠标,按下键盘等等

当我们需要操作某些元素使它有一定的交互效果时,就需要给相应的元素绑定事件处理函数

事件绑定分为3种,分别是HTML内嵌(不推荐)、传统事件绑定(也叫DOM0级事件绑定)、以及DOM2级事件绑定

1.HTML内嵌

 

<!--省略之前代码-->
<body>
    <a href="#" onclick="fnEvent()">点我触发事件</a>
</body>
<script>
    function fnEvent(){
      alert("绑定了事件");
    }
</script>

 

但是这种写法违背了结构表现行为分离的原则,所以并不推荐这样绑定事件

2.DOM0级事件绑定

//省略之前代码
var aA=document.getElementsByTagName("a")[0];
aA.onclick=function(){
  alert("绑定事件成功!");  
}

//也可以写成
function abc(){
  alert("绑定事件成功");  
}
aA.onclick=abc;

 

这是一种赋值的写法,相当于直接将事件处理函数赋值给元素的点击事件,非常简单

缺点是一个元素一次只能绑定一个事件处理函数,新绑定的事件处理函数也会覆盖旧的事件处理函数

3.DOM2级事件绑定

DOM2级事件绑定涉及到IE与标准W3C兼容性问题

还是以上一段代码中的a元素为例,W3C的绑定方式为

 

var aA=document.getElementsByTagName("a")[0];
    aA.addEventListener('click',function(e){
    alert("事件绑定成功");
},false);
//这里aA元素调用addEventListener方法,传入三个参数,分别为事件类型(不带on),事件处理函数以及是否事件捕获(true为事件捕获,false为事件冒泡)

 

而IE下的绑定方式为

aA.attachEvent('onclick',function(){
    alert("绑定了事件");
});
//需要注意的是,IE仅支持事件冒泡,事件处理函数中如果使用this,那么this指向的是window对象,而不是当前元素
//IE的事件绑定函数中事件类型需要带on

这么一来就需要兼容W3C与IE的不同绑定方式

DOM2级事件跨浏览器绑定

//跨浏览器绑定事件
function addEvent(element,type,fn){
    if(element.addEventListener){
      element.addEventListener(type,fn,false);
    }else{
      element.attachEvent('on'+type,fn);  
    }
}

 

posted @ 2016-05-21 21:14  Sakura_大表哥  阅读(159)  评论(0编辑  收藏  举报