js中怎么绑定事件

我们想用两个window.onload的时候,起作用的其实是最后一个。就和变量一个道理,如果写  var a=5;   a=9;  最后a是9;同学说,可以写到一个 window.onload里面,但是实战项目中,我们都是分工合作的,每个人都想用自己的 window.onload,这个时候就需要用到事件绑定了。
    
    
  1. <script>
  2. window.onload=function ()
  3. {
  4. alert('a');
  5. };
  6. window.onload=function ()
  7. {
  8. alert('b');
  9. };
  10. </script>
l IE 方式
l attachEvent ( 事件名称 函数 ) ,绑定事件处理函数
l detachEvent ( 事件名称 函数 ) ,解除绑定
l DOM 方式
l addEventListener ( 事件名称 , 函数 捕获 )
l removeEventListener ( 事件名称 函数 捕获 )

下面我们看一个小例子,如何进行事件绑定:
   
   
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>无标题文档</title>
  6. <script>
  7. window.onload=function ()
  8. {
  9. var oBtn=document.getElementById('btn1');
  10. //attachEvent(事件名, 函数)
  11. //IE
  12. /*
  13. oBtn.attachEvent('onclick', function ()
  14. {
  15. alert('a');
  16. });
  17. oBtn.attachEvent('onclick', function ()
  18. {
  19. alert('b');
  20. });
  21. */
  22. //FF
  23. //addEventListener(事件名, 函数, false)
  24. oBtn.addEventListener('click', function ()
  25. {
  26. alert('a');
  27. }, false);
  28. oBtn.addEventListener('click', function ()
  29. {
  30. alert('b');
  31. }, false);
  32. /*
  33. oBtn.onclick=function ()
  34. {
  35. alert('a');
  36. };
  37. oBtn.onclick=function ()
  38. {
  39. alert('b');
  40. };*/
  41. };
  42. </script>
  43. </head>
  44. <body>
  45. <input id="btn1" type="button" value="按钮" />
  46. </body>
  47. </html>
js中好东西大都不兼容,我们的兼容写法:
   
   
  1. <script>
  2. window.onload=function ()
  3. {
  4. var oBtn=document.getElementById('btn1');
  5. if(oBtn.attachEvent)
  6. {
  7. oBtn.attachEvent('onclick', function ()
  8. {
  9. alert('a');
  10. });
  11. oBtn.attachEvent('onclick', function ()
  12. {
  13. alert('b');
  14. });
  15. }
  16. else
  17. {
  18. oBtn.addEventListener('click', function ()
  19. {
  20. alert('a');
  21. }, false);
  22. oBtn.addEventListener('click', function ()
  23. {
  24. alert('b');
  25. }, false);
  26. }
  27. };
  28. </script>
这个比较常用,我们封装成函数:
   
   
  1. <script>
  2. function myAddEvent(obj, ev, fn)
  3. {
  4. if(obj.attachEvent)
  5. {
  6. obj.attachEvent('on'+ev, fn);
  7. }
  8. else
  9. {
  10. obj.addEventListener(ev, fn, false);
  11. }
  12. }
  13. window.onload=function ()
  14. {
  15. var oBtn=document.getElementById('btn1');
  16. myAddEvent(oBtn, 'click', function (){
  17. alert('a');
  18. });
  19. myAddEvent(oBtn, 'click', function (){
  20. alert('b');
  21. });
  22. };
  23. </script>

回到之前的问题,我们想用两个window.onload:

    
    
  1. <script>
  2. function myAddEvent(obj, ev, fn)
  3. {
  4. if(obj.attachEvent)
  5. {
  6. obj.attachEvent('on'+ev, fn);
  7. }
  8. else
  9. {
  10. obj.addEventListener(ev, fn, false);
  11. }
  12. }
  13. myAddEvent(window,'load',function ()
  14. {
  15. alert('a');
  16. });
  17. myAddEvent(window,'load',function ()
  18. {
  19. alert('b');
  20. });
  21. </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值