JS中跨浏览器兼容的添加事件

今天来讲讲跨浏览器兼容的添加事件。
先来讲一讲HTML 的添加事件,原代码是这样的:

这是一个盒子
,如果在HTML 中添加事件,是这样的:

<div  id ="box "  onclick ="danji (3,5)">这是一个盒子</div >
function  danji (num 1,num 2){
         alert (num 1+num 2);
}

或者还可以这样表达:

<div  id ="box "  onclick ="alert (     danji (3,5)      )">这是一个盒子</div >
function . danji (num 1,num 2){
        return    num 1+num 2;
}

但是有一个值得注意的地方:后面执行的代码会覆盖前面的代码,例如:

<div  id ="box "   onclick ="danji ()">这是一个盒子</div >
function  danji (num 1,num 2){
          alert (num 1+num 2);
}
danji (3,5);
function  danji (num 1,num 2){
        alert (num 1+num 2);
}
danji (4,6);

如果单击该行字会弹出后面那个答案:10;因为会覆盖前面的代码执行。
如果要修改数据的话,其耦合性也使得它很麻烦,因为要改变js 代码可能前面的HTML 那块的代码也要发生改变,所以其耦合性不好。

再来看一下dom 0级事件的添加:
即我们一般所学的正常的写法:

var  box =document. getElementById ("box ");
box. onclick =function (){
      alert (1)}

单击这行字会弹出1,不过和上面一样的,也会有覆盖现象,例如:

box. onclick =function (){
        alert (2);
}

单击之后只会弹出2;

再来看看dom 2级事件的添加:
应用于IE 9及10,8及8以下不兼容,

box. addEventListener (事件名称,函数,false |true ),例如:
box. addEventListener ("click ",function (){
          alert (1);
},false )

这里的false 指的是冒泡,true 表示捕获。一般情况下写false, 指的是冒泡,放在8及以下会不兼容。

再来看一下IE 8及以下的应用:

box. attachEvent (事件名称,函数),例如:
box. attachEvent ("onclick ",function (){
          alert (1);
})

跨浏览器的任何平台都能执行的一添加事件代码:(做兼容)

function  setEvent (dom, evt, fn ){
          if (dom.  addEventListener ){
                   dom. addEventListener (evt, fn, false );
}else if (dom. attachEvent ){
           dom. attachEvent ("on "+evt, fn );
}else{
           dom ["on"+evt ]=fn; //相当于dom. onclick =function (){}
}
}
setEvent (box, "click ",function (){
        alert (1);
})
setEvent (box, "click ",function (){
        alert (2);
})

这样兼容的话弹框在任何平台都能弹出1和2。

到此结束啦!喜欢的记得下方评论呀!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值