addEventListener方法和function(event)方法问题

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>

问题描述:

请老师解答一下,这两种方法有什么区别?还有什么时候使用?

我只是会用,但是不是很理解这两种方法。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

首先它们一个是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去做绑定。因为它更加灵活好用。

暂时先总结这些,其余的同学可以自行去搜索一下两者区别的帖子或看看书籍补充。

祝学习愉快!

  • Jiaco 提问者 #1

    谢谢老师讲解

    2023-05-12 13:15:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师