多元素同id时的事件绑定

2019-08-02  本文已影响0人  来碗鸡蛋面

原创声明

本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:
笔名:来碗鸡蛋面
简书主页:https://www.jianshu.com/u/4876275b5a73
邮箱:job_tom@foxmail.com
CSDN ID:tom_wong666

问题分析:

id作为识别元素的唯一标识,从语义上讲不应该出现共用现象,实际操作中如果有多个元素共用id也会造成意料之外的问题。
项目结构简单时,这样的错误一般不会出现,但是在结构复杂,又有大量重复功能出现时容易出现id重复现象。
实际操作中,今天有发现一个功能异常,A处和B处功能相同,而且A和B的父页面默认隐藏,都通过对应的点击事件触发弹窗显示,A处和B处的功能时好时坏,最终排查为id重复导致的,项目代码因为不能放出来,所以写了如下小demo来展示这个问题。

问题答案:

多元素同id时的事件绑定只在第一个元素生效

示例代码:

<html lang="zh-en">
    <head>
    </head>
    <body>
          <div id="tom">tom1</div>
          <div id="tom">tom2</div>
          <div id="tom">tom3</div>      
          <script>
                var tom =  document.getElementById('tom');
                tom.onclick = function() {
                    console.log(tom); 
                    // 点击tom1时输出 <div id="tom">tom1</div>
                    // 其他两个元素不触发该事件
                }
          </script>
    </body>
</html>

上一篇 下一篇

猜你喜欢

热点阅读