10
0

23_DOM事件委托.html 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <ul>
  10. <li>1</li>
  11. <li>2</li>
  12. <li>3</li>
  13. </ul>
  14. <button id="add-btn">add</button>
  15. <script>
  16. // var aLi = document.getElementsByTagName("li");
  17. // for(var i=0;i<aLi.length;i++){
  18. // aLi[i].onclick = function(){
  19. // console.log(this.innerText);
  20. // }
  21. // }
  22. // 事件委托 事件委托是基于冒泡机制实现
  23. // 相当于把内部多个元素的事件委托给他们共同的父级去处理
  24. var oUl = document.getElementsByTagName("ul");
  25. var addBtn = document.getElementById("add-btn");
  26. oUl[0].onclick = function(e){
  27. // console.log(e);
  28. // console.log(e.target.innerText);
  29. if(e.target.tagName == "LI"){
  30. console.log(e.target.innerText)
  31. }else{
  32. console.log("点错了");
  33. }
  34. }
  35. var i = 4;
  36. addBtn.onclick = function(){
  37. var oLi = document.createElement("li");
  38. oLi.innerText = i++;
  39. oUl[0].append(oLi);
  40. }
  41. // /**
  42. // * 事件委托可以避免循环给内部元素绑定事件
  43. // * 他还可以获取到新增元素
  44. // *
  45. // * /
  46. </script>
  47. </body>
  48. </html>