js中的事件绑定
2016-10-12 14:52
148 查看
1、事件绑定
事件是用户或浏览器自身进行的特定行为.这些事件都有自己的名字,如click(点击),load(载入),mouseover(鼠标经过).用于响应某个事件而调用的函数称为"事件处理函数"或者"事件监听函数".事件处理函数有两种分配方式:
1)在HTML页面中:
2)在JS中:
2、应用
我们想用两个window.onload的时候,起作用的其实是最后一个。就和变量一个道理,如果写
var a=5; a=9; 最后a是9;同学说,可以写到一个window.onload里面,但是实战项目中,我们都是分工合作的,每个人都想用自己的window.onload,这个时候就需要用到事件绑定了。
首先,我们来看下面的代码:
在看下面代码:
在这里我们就对oBtn对象就行绑定addEventListener,在点击之后都可以显示出“a”和“b”。但又出现了问题,那就是兼容性问题,下面是进行处理后代码:
这个就是比较完整的代码了,但是有想到代码过多,所以我们可以把他封装一下:
那么两个load加载就能解决了:
事件是用户或浏览器自身进行的特定行为.这些事件都有自己的名字,如click(点击),load(载入),mouseover(鼠标经过).用于响应某个事件而调用的函数称为"事件处理函数"或者"事件监听函数".事件处理函数有两种分配方式:
1)在HTML页面中:
<div onclick="doSome()" />//点击后执行JS代码中已经定义好的函数:doSome;
2)在JS中:
var oDiv = document.getElementById("testDiv"); oDiv.onclick = function(){ alert("我被点!"); }
2、应用
我们想用两个window.onload的时候,起作用的其实是最后一个。就和变量一个道理,如果写
var a=5; a=9; 最后a是9;同学说,可以写到一个window.onload里面,但是实战项目中,我们都是分工合作的,每个人都想用自己的window.onload,这个时候就需要用到事件绑定了。
首先,我们来看下面的代码:
<span style="font-size:18px;"><script type="text/javascript"> window.onload=function (){ alert('a'); }; window.onload=function (){ alert('b'); <}; </script></span>在上面的两个window.onload事件中,待程序执行完的时候,弹出的只有“b”,why?因为在程序运行中,当第一个事件加载后运行完就开始加载第二个事件,所有就只能看到第二个事件所产生的结果。如果两个都想要看到,那么就需要用到事件的绑定了。
在看下面代码:
<script type="text/javascript"> window.onload = function() { var oBtn = document.getElementById('btn'); oBtn.attachEvent('onclick', function() { alert('a'); }); oBtn.attachEvent('onclick', function() { alert('b'); }); }; </script>
在这里我们就对oBtn对象就行绑定addEventListener,在点击之后都可以显示出“a”和“b”。但又出现了问题,那就是兼容性问题,下面是进行处理后代码:
<script type="text/javascript"> window.onload = function() { var oBtn = document.getElementById('btn'); 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>
这个就是比较完整的代码了,但是有想到代码过多,所以我们可以把他封装一下:
<script type="text/javascript"> function addEvent(obj, ev, fn) { //IE起作用 if(obj.attachEvent) { obj.attachEvent('on' + ev, fn); } //非IE起作用 else { obj.addEventListener(ev, fn, false); } } window.onload = function() { var oBtn = document.getElementById('btn'); addEvent(oBtn, 'click', function() { alert('a'); }); addEvent(oBtn, 'click', function() { alert('b'); }); } </script>
那么两个load加载就能解决了:
<script> function myAddEvent(obj, ev, fn) { if(obj.attachEvent) { obj.attachEvent('on'+ev, fn); } else { obj.addEventListener(ev, fn, false); } } myAddEvent(window,'load',function () { alert('a'); }); myAddEvent(window,'load',function () { alert('b'); }); </script>
相关文章推荐
- jquery textSearch实现页面搜索 注意!!!!调用这个插件后,js事件绑定如,on、bind、live delegate全部失效,折腾了我一整天!!!
- js动态生成的元素绑定事件
- js实现快捷键绑定按钮点击事件
- js 事件绑定
- 绑定touchstart事件(原生js),小心击穿问题
- 原生JS绑定滑轮滚动事件兼容常见浏览器
- Node.js中使用事件发射器模式实现事件绑定详解
- JS绑定回车事件
- 如何用JS获取元素某一事件上绑定的所有Listener
- 怎么使用Js事件的绑定
- JS动态添加元素及绑定事件造成程序重复执行解决
- js事件的绑定
- js循环绑定事件
- js attachEvent ,addEventListener 和 on 绑定事件的区别
- 关于js动态生成元素,注册(绑定)的事件失效的解决(on)
- 01 JS-DOM之--事件以及绑定方法
- JS中控制绑定事件执行顺序
- JS 事件绑定函数代码
- 我的JavaScript回顾之路_05—0210—js和jq绑定事件的区别/事件冒泡