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

2016-02-20 00:38 20 1 收藏

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

【 tulaoshi.com - Web开发 】

原文: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

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

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

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

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

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

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

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

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

来源:http://www.tulaoshi.com/n/20160220/1632312.html

延伸阅读
标签: Web开发
有一点可以不用否认的,那就是当每个页面中中都需要调用同一个文件时,采用JS的文件会比HTML文件快,为了方便这2种代码之间的转化,网上有很多网站提供这样的服务,为了不用转化一下就网上转化,于是呼我找了个最简单的代码,可以轻松时间这2种代码之间的转变,演示地址为:http://www.bkye.com/tool/html-js.htm,如果您在看到演示后觉得还8错...
标签: 阳台 装修
防护网封装法 这种方法只能达到安全防盗的效果,其他作用无法发挥,在居住条件允许并宽松的情况下可以采用。虽然密封性等较差,但是采用防护网对光线阻隔较小,尤其是当选择的是隐形防护网。 窗户封装法 密封性好,可以阻挡室外的风沙,尘土,更能有效地保证室外的冷热空气入侵,保证室内的清洁和室温的平衡。采用这种形式封阳...
标签: Java JAVA基础
      在传统的JSP程序中,我们将HTML代码与Java代码混合在一起编写,这样虽然方便,但同时也导致页面难以维护,HTML开发人员和JSP开发人员负担加重,我们可以将这种传统的技术成为 页面拉数据技术 。     怎样才能做到将HTML开发和JSP开发分离呢?答案就是使用Tag技术,通过使用Tag技术,我们就可以在页...
标签: Web开发
pb定义事件/b p要在 HTC 中定义一个事件,我们需要用到 PUBLIC:EVENT 元素。当我们定义了一个事件后,我们就可以在 HTC 的所在页中来调用它。 p在下面的例子中来示范如何实现一个计算器的功能。在 HTC 中我们使用 EVENT 元素定义了一个 onResultChange 事件。当在所在页中激活 onResultChange 事件时,HTC 将计算出结果并返回...
对上次的三个问题的个人理解: 1) 程序首先是从main函数开始执行的,假设main 函数不是 static ,就要先实例化这个类,然后调用 main 方法,这似乎是不现实的. 其次 用 static 修饰的 main 方法是存储在静态的存贮区当中的,也就是说在创建一个类之后,main 函数就已经存在了,去掉 static 修饰之后,编译可以通过,但是不能执行。 2)查 AP...

经验教程

271

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部