JavaScript 注册事件代码_javascript技巧

首先是最常规的方法:
程序代码

复制代码 代码如下:

<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>

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

时间: 2024-09-19 08:00:13

JavaScript 注册事件代码_javascript技巧的相关文章

Javascript 注册事件浅析_javascript技巧

首先是最常规的方法: test [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 当某一天,我们知道JavaScript要跟HTML结构实现分离后,就会改了一种写法: test [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 当我们工作越来越久后,有时候我们需要对某个元素绑定多个相同的事件类型: test [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 如果按照上面的写法,我们只能输出第二个函数. 这时候我们需要用到attachEvent方法: test [Ct

javascript 动态添加事件代码_javascript技巧

方法一.setAttribute var obj = document.getElementById("obj"); obj.setAttribute("onclick", "javascript:alert('测试');"); 这里利用 setAttribute 指定 onclick 属性,简单,很好理解, 但是:IE 不支持,IE 并不是不支持 setAttribute 这个函数,而是不支持用 setAttribute 设置某些属性,包括对象

浅谈JavaScript之事件绑定_javascript技巧

其实没有什么新的知识点,只是为了方便其他有需要的朋友们翻阅,对自己而言也算是一个积累,所以只能算是闲谈 JavaScript,老鸟们可以尽情飘过.在进入正题之前,先提个问题热热身吧.现在有如下 HTML 结构: 复制代码 代码如下: <div id="wrap"> <input type="button" value="按钮一" /> <input type="button" value=&quo

JavaScript DOM事件(笔记)_javascript技巧

第1章 事件流 1-1.事件冒泡:事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收; 然后逐级向上传播至最不具体的那个节点(文档); 1-2.事件捕获:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件; 第2章 事件处理程序 2-1 HTML事件处理程序 //缺点:HTML和JS代码紧密的耦合在一起; <input type="button" value="按钮" onclick="showMessage()"&g

JavaScript 滚轮事件使用说明_javascript技巧

不过遗憾的是各浏览器都不尽相同. 一) 事件名称不相同 IE, KHTML(Safari, Chrome), Opera对应的事件名称是 "mousewheel".而 Gecko(Firefox, Netscape) 对应的事件名称是 "DOMMouseScroll". 二) 事件对象的属性不一样 有时我们需要知道用户是向上滚了还是向下滚了.例如我们有一个响应滚动事件的函数: 复制代码 代码如下: function wheelHandle(e) { if(e.whe

javascript页面加载完执行事件代码_javascript技巧

复制代码 代码如下: <script type="text/javascript" language="JavaScript">                //: 判断网页是否加载完成                 document.onreadystatechange = function () {                    if(document.readyState=="complete") {        

B/S开发中常用javaScript技术与代码_javascript技巧

在b/s开发中经常用到的javaScript技术  一.验证类 1.数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2.时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月.形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03)

js 触发select onchange事件代码_javascript技巧

select 或text的onchange事件需要手动(通过键盘输入)改变select或text的值才能触发,如果在js中给select或text赋值,则无法触发onchang事件, 例如,在页面加载完成以后,需要触发一个onChange事件,在js中用document.getElementById("province").value="湖北";直接给select或text赋值是不行的,要想实现手动触发onchange事件,需要在js给select赋值后,加入下面的

Javascript调用C#代码_javascript技巧

本文介绍的是嵌入在.Net的WebBrowser控件中显示的HTML文件中的Javascript如何调用C#代码.现在在客户端程序中嵌入网页的做法已经非常普遍了,例如腾讯的新闻弹出框之类的. .Net的WebBrowser用的内核应该还是IE的.IE中,window对象有个external属性,这个属性提供了一个外部接口.可以执行宿主代码.要通过这个属性来调用C#方法,其宿主对象必须是ComVisible的.例如,我们在一个Form上放置一个WebBrowser控件,另外准备一个方法OpenFo