js:怎么使用事件的绑定

在工作中,我们是分工合作的,每个人负责不同的项目,当我们对同一个对象使用同一个事件时,根据顺序结构,起作用的是最后一个,这和变量的声明是一样的,可以理解为前面的被后面的覆盖了,那么这时候我们就可以用事件的绑定,使他们两个都都起作用。

事件绑定用到的代码是有兼容性的,我们先来看看IE的:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件绑定</title>
<script type="text/javascript">
window.οnlοad=function(){
var oBtn=document.getElementById('btn');


oBtn.attachEvent('onclick',function(){
alert('a');
})
oBtn.attachEvent('onclick',function(){
alert('b');
})
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="点击" />
</body>
</html>

这样写法会先出现b,后出现a,在真正使用时就要注意顺序



再来看看其他浏览器的

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件绑定</title>
<script type="text/javascript">
window.οnlοad=function(){
var oBtn=document.getElementById('btn');

oBtn.addEventListener('click',function(){
alert('a');
},false)
oBtn.addEventListener('click',function(){
alert('b');
},false)
}
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="点击" />
</body>
</html>

这个与IE不同之处就是顺序并不会出现调转


接下来便是两种写法的合并,令他们兼容所有浏览器:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件绑定</title>
<script type="text/javascript">
window.οnlοad=function(){
var oBtn=document.getElementById('btn');

if(oBtn.attachEvent){
oBtn.attachEvent('onclick',function(){
alert('a');
})
oBtn.attachEvent('onclick',function(){
alert('b');
})
}
else{
oBtn.addEventListener('click',function(){
alert('a');
},false)
oBtn.addEventListener('click',function(){
alert('b');
},false)
}
}
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="点击" />
</body>
</html>



然而仔细看,两段代码其实有共同之处,差别之处在于一个是attachEvent,一个是addEventListener,一个有on,一个无on,一个无false,一个有false,我们来试试将他们封装起来,方便以后调用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件绑定的函数封装</title>
<script type="text/javascript">
function addEvent(obj,ev,fn){
if(obj.attachEvent){
obj.attachEvent('on'+ev,fn);
}
else{
obj.addEventListener(ev,fn,false);
}
}
window.οnlοad=function(){
var oBtn=document.getElementById('btn');
addEvent(oBtn,'click',function(){
alert('a');
})
addEvent(oBtn,'click',function(){
alert('b');
})
}
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="点击" />
</body>
</html>

我们将其封装成function addEvent,当obj.attachEvent为true时,浏览器就为IE,在ev前加'on',在执行后面的函数。

而当obj.attachEvent为false时,浏览器非IE,便在执行的函数后加上,false

这个函数便封装好了,当我们调用时,只需按照以下格式调用便可:

addEvent(对象,'事件',执行函数1)
addEvent(对象,'事件',执行函数2)



谢谢观看

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值