addEventListener方法和function(event)方法问题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>jquery</li>
<li>HTML5</li>
<li>CSS3</li>
<li>ES6</li>
</ul>
<script type="text/javascript">
var lis = document.querySelectorAll("li")
//function(event)方法
/* for(let i = 0;i<lis.length;i++) {
let t=lis[i].innerHTML;
lis[i].style.cursor='pointer'
lis[i].onmouseenter=function(e){
e.target.style.color='red';
e.target.style.fontSize='20px';
e.target.innerHTML=t+'我是第'+(i+1)+'个';
};
lis[i].onmouseleave=function(e){
e.target.style.color='';
e.target.style.fontSize='';
e.target.innerHTML=t;
}
}*/
//addEventListener方法
for(let i = 0;i<lis.length;i++) {
let t=lis[i].innerHTML;
lis[i].style.cursor='pointer'
lis[i].addEventListener('mouseenter',function(){
lis[i].style.color='red';
lis[i].style.fontSize='20px';
lis[i].innerHTML=t+'我是第'+(i+1)+'个';
},
false),
lis[i].addEventListener('mouseleave',function(){
lis[i].style.color='';
lis[i].style.fontSize='';
lis[i].innerHTML=t;
},
false)
}
</script>
</body>
</html>问题描述:
请老师解答一下,这两种方法有什么区别?还有什么时候使用?
我只是会用,但是不是很理解这两种方法。
正在回答
同学你好,解答如下:
首先它们一个是DOM2级事件,一个是DOM0级事件(addEventListener为DOM2级事件绑定,onxxxx为DOM0级事件绑定。)
1、addEventListener相当于是onxxx的“升级”版。
2、addEventListener可以给同一个DOM多次绑定事件。而onxxx同一个元素只能绑定一个事件,如多次给同一个DOM绑定多次事件,最后面的事件会覆盖前面的事件。
3、addEventListener有三个参数,同时它可以处理冒泡与捕获。
4、在给DOM事件做绑定的时候两者的区别addEventListener可以不需要写on,而DOM0级事件如onclick中的on是不能省略的。
5、对于两者的移除事件,addEventListener有自己的移除方式--> removeListener我们俗称它是解绑,DOM0级如onclick直接将其指针指向null即可-->document.onmouseover= null;
6、关于兼容性问题在IE6、7、8版本中addEventListener是无效的。
7、如果涉及到使用原生JS的话,我主观更建议使用DOM2级addEventListener去做绑定。因为它更加灵活好用。
暂时先总结这些,其余的同学可以自行去搜索一下两者区别的帖子或看看书籍补充。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星