04.事件的绑定.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script>
  9. window.onload = function () {
  10. /**
  11. * 点击按钮以后弹出一个内容
  12. */
  13. //获取按钮对象
  14. var btn01 = document.getElementById("btn01");
  15. /**
  16. * 使用 对象.事件=函数 的形式绑定响应函数,
  17. * 它只能同时为一个元素的一个事件绑定一个响应函数,
  18. * 不能绑定多个,如果绑定了多个,则后边的会覆盖掉前面的
  19. */
  20. // //为btn01绑定一个单击响应函数
  21. // btn01.onclick = function(){
  22. // alert(1);
  23. // };
  24. // //为btn01绑定第二个响应函数
  25. // btn01.onclick = function(){
  26. // alert(2);
  27. // };
  28. /**
  29. * addEventListener()
  30. * -通过这个方法也可以为元素绑定响应函数
  31. * -参数:
  32. * 1.事件的字符串,不要on
  33. * 2.回调函数,当事件触发时,该函数会被调用
  34. * 3.是否在捕获阶段触发事件,需要一个布尔值,一般都传false
  35. *
  36. * 使用addEventListener()可以同时为一个元素的相同事件同时绑定多个响应函数
  37. * 这样当事件被触发时,响应函数将会按照函数的绑定顺序执行
  38. *
  39. * 这个方法不支持IE8及以下的浏览器
  40. */
  41. // btn01.addEventListener("click", function () {
  42. // alert(1);
  43. // }, false);
  44. // btn01.addEventListener("click", function () {
  45. // alert(2);
  46. // }, false);
  47. /**
  48. * attachEvent()
  49. * -在IE8中可以使用attachEvent()来绑定事件
  50. * -参数:
  51. * 1.事件的字符串,要on
  52. * 2.回调函数
  53. * -这个方法也可以同时为一个事件绑定多个处理函数,
  54. * 不同的是它是后绑定先执行,执行顺序和addEventListener()相反
  55. *
  56. * (此方法在Edge已不可用)
  57. */
  58. // btn01.attachEvent("onclick", function () {
  59. // alert(1);
  60. // });
  61. // btn01.attachEvent("onclick", function () {
  62. // alert(2);
  63. // });
  64. // btn01.addEventListener("click", function () {
  65. // alert(this);//button
  66. // }, false);
  67. // btn01.attachEvent("onclick", function () {
  68. // alert(2);//IE8中测试为window
  69. // });
  70. bind(btn01,"click",function(){
  71. alert(this);
  72. });
  73. // bind(btn01,"click",function(){
  74. // alert(2);
  75. // });
  76. };
  77. //定义一个函数,用来为指定元素绑定响应函数
  78. /**
  79. * addEventListener()中的this,是绑定事件的对象
  80. * attachEvent中的this,是window
  81. * 需要统一两个方法的this
  82. */
  83. /**
  84. * 参数:
  85. * obj:要绑定事件的对象
  86. * eventStr: 事件的字符串(不要on)
  87. * callback:回调函数
  88. */
  89. function bind(obj, eventStr, callback) {
  90. if (obj.addEventListener) {
  91. //大部分浏览器兼容的方式
  92. obj.addEventListener(eventStr, callback, false);
  93. } else {
  94. /**
  95. * this是谁由调用方式决定
  96. * callback.call(obj):call方法可以修改this
  97. */
  98. //IE8及以下
  99. obj.attachEvent("on" + eventStr, function(){
  100. //在匿名函数中调用回调函数
  101. callback.call(obj);
  102. });
  103. }
  104. }
  105. </script>
  106. </head>
  107. <body>
  108. <button id="btn01">点我一下</button>
  109. </body>
  110. </html>