JS一个元素怎么绑定多个事件

有时候一个一个元素要绑定多个事件,其实是分开写

先看这个例子,我们预期它先执行alert1,然后是alert2,但事实上是没有alert1,因为覆盖了

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>绑定多个事件</title>
  <script>
    window.onload = function(){
      document.getElementById('btn').onclick = function () {
        alert(1);
      };
      document.getElementById('btn').onclick = function () {
        alert(2);
      };
    }
  </script>
</head>
<body>
  <button id="btn">点我</button>
</body>
</html>

只需要使用addEventListener方法即可解决这个问题:

<script>
    window.onload = function(){
      document.getElementById('btn').addEventListener('click', function(){
        alert(1);
      }, false);
      document.getElementById('btn').addEventListener('click', function(){
        alert(2);
      }, false);
    }
</script>

其中addEventListener的参数值得说一下,第一个参数是事件名称,没有on,第二个是回调函数,其实是浏览器调用的,第三个是 是否捕获阶段触发,一般设置为false,还有就是这个方法是先绑定的先执行

另外,经过测试,发现这个addEventListener在IE8及一下版本不支持,可以使用attachEvent方法开替代,当然,是兼容处理

这个用法如下:

元素.attachEvent( 'onclick', function(){...} );

这个方法是先绑定的后执行,当然,如果你这么介意顺序,就没必要分开绑定了

转自:https://blog.csdn.net/qq_38238041/article/details/86797019

原文地址:https://www.cnblogs.com/vickylinj/p/14288938.html