javascript事件处理程序

落日映苍穹つ 2022-08-01 13:59 349阅读 0赞

javascript 事件处理程序

1、普通事件处理程序

  1. <input type="button" value="click me" οnclick="showMessage()" />
  2. function showMessage(){
  3. alert("clicked");
  4. }

2、DOMO 级事件处理程序

  1. <span style="white-space:pre"> </span>//老方法
  2. var btn=document.getElementById("myBtn");
  3. //dom扩展方法 支持主流浏览器,类似jquery语法
  4. var btn=document.querySelector("#myBtn");
  5. btn.οnclick=function(){
  6. alert("clicked!");
  7. };

3、DOM2 级事件处理程序

主要介绍这个,上面两个大家应该都很熟悉了。DOM2事件处理程序定义了两个方法,用于添加和删除事件处理程序操作:addEventListener() 和 removeEventListener()

所有DOM节点都包含这两个方法,他们有3个参数 :要处理的事件名、函数 、布尔值(true捕获阶段执行,false冒泡阶段执行),一般填false

例子:

  1. var btn=document.getElementById("myBtn");
  2. btn.addEventListener("click",function(){
  3. alert("clicked!");
  4. },false);
  5. //传入removeEventListener 的参数必须和addEventListener 一样
  6. btn.removeEventListener("click",function(){
  7. //这里不会执行 没有用--
  8. alert("clicked!");
  9. },false);

IE实现了两个类似的方法:attachEvent()和detachEvent() ,接受两个参数。没有八个bool值

例子 :

  1. var btn=document.getElementById("myBtn");
  2. btn.attachEvent("onclick",function(){
  3. alert("clicked");
  4. });
  5. btn.detachEvent("onclick",function(){
  6. alert("clicked");
  7. });

所以 我们这边也写了个跨浏览器的事件处理程序:

  1. //跨浏览器 事件处理程序
  2. var EventUtil= {
  3. addHandler:function(element,type,handler){
  4. if(element.addEventListener){
  5. element.addEventListener(type,handler,false);
  6. }else if(element.attachEvent){
  7. element.attachEvent("on"+type,handler);
  8. }else{
  9. element["on"+type]=handler;
  10. }
  11. },
  12. removeHandler:function(element,type,handler){
  13. if(element.removeEventListener){
  14. //除IE 其他
  15. element.removeEventListener(type,handler,false);
  16. }else if(element.detachEvent){
  17. //IE
  18. element.detachEvent("on"+type,handler);
  19. }else{
  20. element["on"+type]=handler;
  21. }
  22. }
  23. }

#

发表评论

表情:
评论列表 (有 0 条评论,349人围观)

还没有评论,来说两句吧...

相关阅读