javascript下给元素添加事件的方法与代码


Posted in Javascript onAugust 13, 2007

最简单的是这样:

<input type="button" onclick="alert(this.value)" value="我是 button" />
动态添加onclick事件:

<input type="button" value="我是 button" id="bu">
<script type="text/javascript">
var bObj=document.getElementById("bu");
bObj.onclick= objclick;
function objclick(){alert(this.value)};
</script>
如果使用匿名函数 function(){},则如下面所示:

<input type="button" value="我是 button" id="bu">
<script type="text/javascript">
var bObj=document.getElementById("bu");
bObj.onclick=function(){alert(this.value)};
</script>

上面的方法其实原理都一样,都是定义 onclick 属性的值。值得注意的是,如果多次定义 obj.onclick,例如:obj.onclick=method1; obj.onclick=method2; obj.onclick=method3,那么只有最后一次的定义obj.onclick=method3才生效,前两次的定义都给最后一次的覆盖掉了。

再看 IE 中的 attachEvent:

<input type="button" value="我是拉登" id="bu">
<script type="text/javascript">
var bObj = document.getElementById("bu");
bObj.attachEvent("onclick",method1);
bObj.attachEvent("onclick",method2);
bObj.attachEvent("onclick",method3);
function method1(){alert("第一个alert")}
function method2(){alert("第二个alert")}
function method3(){alert("第三个alert")}
</script>
执行顺序是 method3 > method2 > method1 ,先进后出,与堆栈中的变量相似。需要注意的是attachEvent 中第一个参数是on开头的,可以是 onclick/onmouseover/onfocus 等等

据说(未经确认验证)在 IE 中使用 attachEvent 后最好再使用 detachEvent 来释放内存

再看看 Firefox 中的的 addEventListener:

<input type="button" value="我是布什" id="bu">
<script type="text/javascript">
var bObj = document.getElementById("bu");
bObj.addEventListener("click",method1,false);
bObj.addEventListener("click",method2,false);
bObj.addEventListener("click",method3,false);
function method1(){alert("第一个alert")}
function method2(){alert("第二个alert")}
function method3(){alert("第三个alert")}
</script>
可以看到,在 ff 中的执行顺序是 method1 > method2 > method3 , 刚好与 IE 相反,先进先出。需要注意的是 addEventListener 有三个参数,第一个是不带“on”的事件名称,如 click/mouseover/focus等。

Javascript 相关文章推荐
js中eval详解
Mar 30 Javascript
jquery队列函数用法实例
Dec 16 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
jquery 键盘事件的使用方法详解
Sep 13 jQuery
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
详解Bootstrap 学习(一)入门
Apr 12 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
javascript引用对象的方法代码
Aug 13 #Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 #Javascript
一段效率很高的for循环语句使用方法
Aug 13 #Javascript
javascript实现轮显新闻标题链接
Aug 13 #Javascript
document.open() 与 document.write()的区别
Aug 13 #Javascript
js小技巧--自动隐藏红叉叉
Aug 13 #Javascript
javascript据option的value值快速设定初始的selected选项
Aug 13 #Javascript
You might like
PHP通用检测函数集合
2011/02/08 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
基于Jquery的简单图片切换效果
2011/01/06 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python查看微信好友是否删除自己
2016/12/19 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
退休感言
2014/01/28 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL