HTML 中直接寫 onmouseover、onmouseout 等行內事件,導致結構與行為耦合,維護困難。需將事件綁定邏輯移至 JavaScript 代碼中。
// 假設 6 個 div 的 id 為 "1" 到 "6"
for (var i = 1; i <= 6; i++) {
var el = document.getElementById(i);
if (el) {
el.onmouseover = function() { showGood(this.id); };
el.onmouseout = noGood;
}
}
若元素動態生成或數量大,建議在父容器綁定單一事件:
document.getElementById('container').addEventListener('mouseover', function(e) {
if (e.target.matches('.item')) showGood(e.target.id);
});
document.getElementById('container').addEventListener('mouseout', function(e) {
if (e.target.matches('.item')) noGood();
});
i 形成閉包陷阱(上方代碼用 this.id 正確獲取)。addEventListener 而非 onxxx,支援多監聽器且不覆蓋。DOMContentLoaded 或腳體底部)。
