详解javascript事件绑定使用方法


Posted in Javascript onOctober 20, 2016

由于html是从上至下加载的,通常我们如果在head部分引入javascript文件,那么我们都会在javascript的开头添加window.onload事件,防止在文档问加载完成时进行DOM操作所出现的错误。如果有多个javascript文件,那么极有可能出现多个window.onload事件,但是最后起作用的只有一个,这时候就需要使用事件绑定来解决这个问题了。

IE方式
attachEvent(事件名称, 函数),绑定事件处理函数
detachEvent(事件名称, 函数),解除绑定

DOM方式
addEventListener(事件名称,函数, 捕获)
removeEventListener(事件名称, 函数, 捕获)

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>无标题文档</title> 
<script> 
window.onload=function () 
{ 
  var oBtn=document.getElementById('btn1'); 
  oBtn.onclick=function () 
  { 
    alert('a'); 
  }; 
   
  oBtn.onclick=function () 
  { 
    alert('b'); 
  }; 
}; 
</script> 
</head> 
<body> 
<input id="btn1" type="button" value="按钮" /> 
</body> 
</html>

这段代码,运行结果是弹出b,因为有两个oBtn的点击事件,但是只执行了最后一个,这时候就体现出事件绑定的重要性了。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>无标题文档</title> 
<script> 
window.onload=function () 
{ 
  var oBtn=document.getElementById('btn1'); 
  //IE浏览器 
  if(oBtn.attachEvent) 
  { 
    oBtn.attachEvent('onclick', function () 
    { 
      alert('a'); 
    }); 
    oBtn.attachEvent('onclick', function () 
    { 
      alert('b'); 
    }); 
  } 
  //其他浏览器 
  else 
  { 
    oBtn.addEventListener('click', function () 
    { 
      alert('a'); 
    }, false); 
    oBtn.addEventListener('click', function () 
    { 
      alert('b'); 
    }, false); 
  } 
   
}; 
</script> 
</head> 
<body> 
<input id="btn1" type="button" value="按钮" /> 
</body> 
</html>

当你使用事件绑定的时候,那么两次点击事件都会执行,只是执行顺序在不同浏览器是不同的。在IE中是自下而上执行,而在其他浏览器中是自上而下,不过由于alert的特殊性我们可以看出差别,其他语句基本等同于没有差别,但是在对于一些对时间要求严格是事件的使用时还是需要注意的,比如之前有一篇文章图片轮播中的setInterval对时间的细微的差别最后导致滚动混乱。 基于原生javascript的图片轮播domo

最后将我们的代码整理成函数,便于之后的使用

function myAddEvent(obj, ev, fn) 
{ 
  if(obj.attachEvent) 
  { 
    obj.attachEvent('on'+ev, fn); 
  } 
  else 
  { 
    obj.addEventListener(ev, fn, false); 
  } 
}

这时候如果需要使用多个window.onload事件其实就和使用多个oBtn.onclick事件差不多了。如下调用函数即可。

myAddEvent(window,'load',function () 
{ 
  alert('a'); 
}); 
myAddEvent(window,'load',function () 
{ 
  alert('b');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
js类型检查实现代码
Oct 29 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
详解Vue2.x-directive的学习笔记
Jul 17 Javascript
Echarts基本用法_动力节点Java学院整理
Aug 11 Javascript
JS实现星星海特效
Dec 24 Javascript
详解element上传组件before-remove钩子问题解决
Apr 08 Javascript
JS猜数字游戏实例讲解
Jun 30 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 #Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 #Javascript
JS中动态创建元素的三种方法总结(推荐)
Oct 20 #Javascript
yarn与npm的命令行小结
Oct 20 #Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 #Javascript
Javascript的动态增加类的实现方法
Oct 20 #Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 #Javascript
You might like
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
php格式化时间戳
2016/12/17 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
javaScript基础详解
2017/01/19 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
express框架下使用session的方法
2019/07/31 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
素质拓展感言
2014/01/29 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
师德师风个人总结
2015/02/06 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript