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代码
Nov 09 Javascript
某页码显示的helper 少量调整,另附js版
Sep 12 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 Javascript
js 颜色选择插件
Jan 23 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
Apr 10 Javascript
小程序自动化测试的示例代码
Aug 11 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学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
jquery 问答知识整理
2010/02/11 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
js控制input输入字符解析
2013/12/27 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
python os用法总结
2018/06/08 Python
python使用zip将list转为json的方法
2018/12/31 Python
python制作抖音代码舞
2019/04/07 Python
解决Python对齐文本字符串问题
2019/08/28 Python
使用python实现学生信息管理系统
2021/02/25 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
学生处主任岗位职责
2013/12/01 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
开学第一天的感想
2015/08/10 职场文书
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android