最好是簡單點,
js 怎么給多個div循環添加點擊事件
慕村1106498
2017-06-19 13:43:28
TA貢獻3條經驗 獲得超2個贊
window.onload?=?function(){ ????var?aDiv?=?document.getElementByTagName("div"); ????for(var?i=0;i<aDiv.length;i++){ ????????aDiv[i].index?=?i; ????????aDiv[i].onclick?=?function(){ ????????????... ????????} ????} }
TA貢獻3條經驗 獲得超0個贊
使用事件代理,比循環點擊的效率好很多,也更規范。
為li添加點擊事件如下:
<ul?id="todo-app"> ??<li?class="item">Walk?the?dog</li> ??<li?class="item">Pay?bills</li> ??<li?class="item">Make?dinner</li> ??<li?class="item">Code?for?one?hour</li> </ul>
第一種 使用循環:
document.addEventListener('DOMContentLoaded',?function()?{ ??let?app?=?document.getElementById('todo-app'); ??let?items?=?app.getElementsByClassName('item'); ??//?給每個列表項添加事件監聽器 ??for?(let?item?of?items)?{ ????item.addEventListener('click',?function()?{ ??????alert('you?clicked?on?item:?'?+?item.innerHTML); ????}); ??} });
第二種 ?事件代理:
document.addEventListener('DOMContentLoaded',?function()?{ ??let?app?=?document.getElementById('todo-app'); ??//?給容器添加事件監聽器 ??app.addEventListener('click',?function(e)?{ ????if?(e.target?&&?e.target.nodeName?===?'LI')?{ ??????let?item?=?e.target; ??????alert('you?clicked?on?item:?'?+?item.innerHTML); ????} ??}); });
舉報