javascript下给元素添加事件的方法与代码
程序员文章站
2022-10-09 10:15:05
最简单的是这样:
最简单的是这样:
<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等。
<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下给元素添加事件的方法与代码
-
优雅的获取表单元素、dom树的遍历与常用属性、dom元素的增删改操作、js操作元素内容的几个常用方法、元素的dataset对象、获取元素的计算样式、元素的classList 对象常用方法、事件的添加与派发
-
javascript - jQuery给动态添加的元素绑定事件的问题? - SegmentFault
-
javascript - jQuery给动态添加的元素绑定事件的问题? - SegmentFault
-
jQuery给动态添加的元素绑定事件的方法_jquery
-
javascript下给元素添加事件的方法与代码_表单特效
-
优雅的获取表单元素、dom树的遍历与常用属性、dom元素的增删改操作、js操作元素内容的几个常用方法、元素的dataset对象、获取元素的计算样式、元素的classList 对象常用方法、事件的添加与派发
-
JS下高效拼装字符串的几种方法比较与测试代码_javascript技巧
-
javascript - jQuery给动态添加的元素绑定事件的问题?