問題分析:
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>