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 相关文章推荐
javascript编程起步(第二课)
Feb 27 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
jQuery jcrop插件截图使用方法
Nov 20 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
微信小程序引用iconfont图标的方法
Oct 22 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
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程序之die调试法 快速解决错误
2009/09/17 PHP
php实现天干地支计算器示例
2014/03/14 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python实现简单神经网络算法
2018/03/10 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
Python聊天室程序(基础版)
2018/04/01 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
python实现无边框进度条的实例代码
2020/12/30 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Java的五个基础面试题
2016/02/26 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
赤壁观后感(2)
2015/06/15 职场文书
使用Redis做预定库存缓存功能
2022/04/02 Redis
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android