12_js事件机制.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. <style>
  8. .box1{
  9. width: 400px;
  10. height: 400px;
  11. background-color: red;
  12. }
  13. .box2{
  14. width: 200px;
  15. height: 200px;
  16. background-color: blue;
  17. }
  18. .box3{
  19. width: 100px;
  20. height: 100px;
  21. background-color: green;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div class="box1">
  27. <div class="box2">
  28. <div class="box3"></div>
  29. </div>
  30. </div>
  31. <script>
  32. // 事件冒泡 当有多个元素嵌套的时候 并且绑定相同事件当内层元素触发事件的时候 会逐层触发外层元素的事件
  33. var oBox1 = document.getElementsByClassName("box1")[0];
  34. var oBox2 = document.getElementsByClassName("box2")[0];
  35. var oBox3 = document.getElementsByClassName("box3")[0];
  36. // oBox1.onclick = function(){
  37. // console.log("box1");
  38. // }
  39. // oBox2.onclick = function(){
  40. // console.log("box2");
  41. // }
  42. // oBox3.onclick = function(e){
  43. // console.log("box3");
  44. // // 阻止事件冒泡
  45. // // e.stopPropagation();
  46. // }
  47. // 实用on赋值方式绑定事件与addEventListener绑定事件区别
  48. // addEventListener 可以重复绑定相同事件 而 on方式不可以
  49. // on方式可以重复绑定相同事件 但是只执行最后一次绑定事件
  50. // addEventListener 可以触发事件捕获 而 on方式不可以
  51. // addEventListener 可以使用 removeEventListener 移除事件
  52. // on绑定事件 则需要给事件负一个空值
  53. //事件冒泡 addEventListener 第三个参数为false 事件冒泡
  54. // oBox1.addEventListener("click",function(){
  55. // console.log("box1");
  56. // },false)
  57. // oBox2.addEventListener("click",function(){
  58. // console.log("box2");
  59. // },false)
  60. // oBox3.addEventListener("click",function(e){
  61. // console.log("box3");
  62. // },false)
  63. // 事件捕获 addEventListener 第三个参数为true 事件捕获
  64. // oBox1.addEventListener("click",function(){
  65. // console.log("box1");
  66. // },true);
  67. // oBox2.addEventListener("click",function(){
  68. // console.log("box2");
  69. // },true)
  70. // oBox3.addEventListener("click",function(e){
  71. // console.log("box3");
  72. // },true)
  73. // addEventListener 三个参数 第一个事件名称 第二个事件处理函数 第三个事件是否捕获还是冒泡
  74. function foo(){
  75. console.log("hello");
  76. }
  77. // 回调函数 当一个方法执行完毕之后或者触发事件的时候 回来再执行的函数
  78. // 如果函数是用作于回调函数使用那么后边括号必须省略
  79. oBox1.addEventListener("click",foo);
  80. oBox1.removeEventListener("click",foo);
  81. </script>
  82. </body>
  83. </html>