JS和HTML分离:注册事件的方法进行封装

1997为生活

1997为生活

2016-02-20 00:38

今天图老师小编要跟大家分享JS和HTML分离:注册事件的方法进行封装,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

原文:http://www.cssrain.cn/article.asp?id=985

首先是最常规的方法:

p id="para" title="cssrain demo!" onclick="test()" test/p
script
function test(){
  alert("test");
}
/script

当某一天,我们知道JavaScript要跟HTML结构实现分离后,就会改了一种写法:

p id="para" title="cssrain demo!"test/p
script
function test(){
  alert("test");
}
window.onload = function(){
    document.getElementById("para").onclick = test;
}
/script

当我们工作越来越久后,有时候我们需要对某个元素绑定多个相同的事件类型:

p id="para" title="cssrain demo!"test/p
script
function test(){
  alert("test");
}
function pig(){
  alert("pig");
}
window.onload = function(){
     document.getElementById("para").onclick = test;
     document.getElementById("para").onclick = pig;
}
/script

如果按照上面的写法,我们只能输出第二个函数。
这时候我们需要用到attachEvent方法:


p id="para" title="cssrain demo!"test/p
script
function test(){
  alert("test");
}
function pig(){
  alert("pig");
}
window.onload = function(){
     document.getElementById("para").attachEvent("onclick",test);
     document.getElementById("para").attachEvent("onclick",pig);
}
/script

在一段时间内,你并没发现这段代码有任何错误。

某一天,一个名叫firefox的浏览器 闯入你的视野,当我们把这段代码放到firefox中执行后,

发现并不能正常运行。 问题就这样,越来越多,然而作为一名JS程序员,这些都是必须面对的。

为了解决这段代码的平台兼容性问题,我翻翻手册,知道了firefox跟ie的区别:

firefox中注册事件使用:addEventListener方法,同时为了兼容ie,我们必须用到if ... else...

p id="para" title="cssrain demo!"test/p
script
function test(){
  alert("test");
}
function pig(){
  alert("pig");
}
window.onload = function(){
         var element =  document.getElementById("para");
         if(element.addEventListener){  // firefox  , w3c
                element.addEventListener("click",test,false);
    element.addEventListener("click",pig,false);
         } else {   // ie
    element.attachEvent("onclick",test);
    element.attachEvent("onclick",pig);
         }
}
/script

此时,代码就可以在多个平台上工作了。

但随着水平的进步,你不满足每次都去判断,你想把这个判断封装起来,以后可以直接调用:

p id="para" title="cssrain demo!"test/p
script
function test(){
  alert("test");
}
function pig(){
  alert("pig");
}
function addListener(element,e,fn){
     if(element.addEventListener){
          element.addEventListener(e,fn,false);
     } else {
          element.attachEvent("on" + e,fn);
     }
}
window.onload = function(){
         var element =  document.getElementById("para");
         addListener(element,"click",test);
         addListener(element,"click",pig);
}
/script

至此,作为一个程序员的工作就完了。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

中间我们从一个最传统,最基本的写法 , 然后实现Js和HTML的分离,然后又实现对同一个元素注册多个事件,期间,我们发现注册事件的兼容性问题。最后我们对注册事件的方法进行封装,方便以后使用。

好了,文章写到这里。希望大家有收获哦。。。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

JS和HTML分离:注册事件的方法进行封装

Web开发
JS和HTML分离:注册事件的方法进行封装

CSS圆角框进行JS封装

Web开发
CSS圆角框进行JS封装

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

js文件封装javascript在html中获取url参数

Web开发
js文件封装javascript在html中获取url参数

JQuery 选项卡效果(JS与HTML的分离)

Web开发
JQuery 选项卡效果(JS与HTML的分离)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

IntegratedTemplate类实现HTML和PHP代码分离

PHP
IntegratedTemplate类实现HTML和PHP代码分离

过滤所有HTML代码和CSS,JS

Web开发
过滤所有HTML代码和CSS,JS

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JS获取各种浏览器窗口的大小

JS获取各种浏览器窗口的大小

MAC下VLC播放器中文字幕乱码如何修复

MAC下VLC播放器中文字幕乱码如何修复
下拉加载更多内容 ↓