对同一个对象绑定多个响应事件并都执行

1.因为 onclick=" "  添加的元素响应事件,先添加的事件,会被后来添加的事件层叠掉,只能执行最后一个响应的事件

所以要用到事件监听addElementLitener()来绑定多个处理函数,而因为兼容性的问题需要兼容代码。

2.在IE8中,addElementLitener()这个函数不被兼容,而使用attachEvent()。但是,这个又不被谷歌,火狐兼容,所以需要写兼容代码

3.addElementLitener() 有三个参数,而attachEvent()只有两个参数,前一项的响应事件名前面不用加on,IE需要这是他自己因为违背标准指定的,其他版本是为了兼容IE而做出的让步

4.在浏览器不支持某个方法时,他会返回的是字符串undefined

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>绑定多个事件</title>
</head>
<body>
  <input type="button" value="点我不花钱" id="btn">

<script type="text/javascript">
  function myGet(id){
    return document.getElementById(id);
  }

  function addEventListener(element,type,fn){
    // 这个自定义的函数跟下面的方法重名注意区分
    if(typeof element.addEventListener != "undefined"){
      // 一定要注意,undefined是字符串类型,如果去掉在IE中死循环
      element.addEventListener(type,fn,false);
    }else if(typeof element.attachEvent != "undefined"){
      element.attachEvent("on"+type,fn);
      // 响应事件名字如click应该直接写也能直接表达他的意思,而微软非要在前面加一个"on"
    }else{
      element["on"+type] = fn;
      // 如果浏览器上面两个都不兼容,只能写这样一种
    }
  }

  addEventListener(myGet("btn"),"click",function () {
    console.log("陈小帅");
  });
  addEventListener(myGet("btn"),"click",function () {
    console.log("是真的");
  });
  addEventListener(myGet("btn"),"click",function () {
    console.log("真的好帅啊");
  });
</script>

</body>
</html>

原文地址:https://www.cnblogs.com/sherryweb/p/10984005.html

时间: 2024-10-16 22:54:09

对同一个对象绑定多个响应事件并都执行的相关文章

夺命雷公狗jquery---22-bind为jquery对象绑定多个相关事件

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> <script> //页面载入ready方法 $(function(){ $('img').bind({ mouseover:function(){

unity3D 游戏物体同时绑定单击、双击事件

前言 在unity中我们常用的获取鼠标点击的方法有 在3D场景中,一般用在Update方法中,每一帧调用 void Update(){ if(Input.GetMouseButtonDown(0)){ Debug.log("鼠标左键点击"); } } 在画布场景中,一般用在OnGUI方法中,这个也是一个循环调用的方法 void OnGUI() { Event e = Event.current; if (e.isMouse && (e.clickCount == 2))

给js动态创建的对象绑定事件

1.使用原生JS动态为动态创建的对象绑定事件 1-1.创建一个function,用来兼容IE8以下浏览器添加事件 function addEvent(el, type, fn) {  if(el.addEventListener){ el.addEventListener(type,fn,false) }else if(el.attachEvent()){ el.attachEvent('on' + type,fn,false) }else{ return false }} 1-2.使用JS创建

为同一个元素绑定不同的事件指向同一个事件的处理函数

<input type="button" value="点击" id="btn"/><script src="commer.js"></script><script> //为同一个元素绑定不同的事件指向同一个事件的处理函数 ver("btn").onclick=f1; ver("btn").onmouseover=f1; ver("

夺命雷公狗jquery---21-bind为jquery对象绑定相关事件

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> <script> //页面载入ready方法 $(function(){ //为按钮绑定单击事件 $('#btnok').bind('click',f

ExtJS学习笔记2:响应事件、使用AJAX加载数据

响应事件: 1.设置一个html标记 <div id="my-div">Ext JS 4 Cookbook</div> 2.使用get函数获取此标记对象 var el = Ext.get('my-div'); 3.将响应函数和对象的事件绑定 el.on('click', function(e, target, options){ alert('The Element was clicked!'); alert(this.id); }, this); 4.一次也可

javascript内置对象(BOM)及事件

BOM 浏览器对象模型,该对象模型提供了独立于内容的,与浏览器窗口进行交互的对象 该对象提供了以下操作: histroty对象 当前窗口的浏览历史 location对象  当前文档的URL screen对象   客户端显示屏幕信息 Navigator  用户所使用的浏览器信息 location.href = 'url';//url跳转 history子对象:(操作浏览历史) 无刷新返回上一页: history.back(); 1 <a href="?page=5">第5页&

Javascript 事件对象(六)键盘事件

keyCode获取用户按下键盘的哪个按键 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <script> 7 /* 8 onkeydown : 当键盘按键按下的时候触发

【转载】W3C下的冒泡和捕获机制。到底是冒泡呢。还是捕获呢。一个DOM元素绑定多个事件时如何执行。

原文  http://blog.csdn.net/u011719449/article/details/23787627 在准备阿里前端面试的时候看到这么一道题. 一个DOM元素绑定两个事件,一个冒泡,一个捕获,则事件会执行多少次,执行顺序如何. 这导致了我对冒泡和捕获又进一步深入的了解.(永远都在发现自己知识匮乏的日子中度过人生真是好抓急啊.) 首先冒泡和捕获是怎么一回事. 简单点说.冒泡就是从下往上,像鱼吐泡,泡泡是从下往上升的,也就是DOM元素被触法事件时(此时的dom元素为目标元素),目