绑定事件监听函数

最近一直在看《精通javascript》,很赞的书,顺便做一些小笔记。

今天看到了事件绑定方面的内容,分为传统绑定和W3C的DOM绑定

 

1. 传统绑定如下:

document.getElementById("button").onclick = function(e) {
  // your code
  alert(this.value);
 }

优点:不同浏览器都可以正常使用;可以使用this关键字,引用当前元素。

缺点:只会在事件冒泡时候运行;一个函数一次只能绑定一个事件处理函数,相同的事件处理函数互相覆盖;事件对象仅对非IE浏览器可用。

 

2. DOM绑定:W3C

void addEventListener(String type,
                      Function listener,
                      boolean useCapture);

 支持冒泡(false)捕获(true),this引用当前元素,同一个元素可以绑定多个事件,并且不会覆盖先前绑定的事件。

 不支持IE。

 

3. DOM绑定:IE

void attachEvent(String type, Function listener);

 同一个元素可以绑定多个事件,并且不会覆盖先前绑定的事件。

 仅支持冒泡阶段,this对象指向window对象,而不是当前元素

 根据API,可以在IE下获得当前元素,如下:

 

function init() {
		var btn = document.getElementById("button1");
		if (document.all)
		{
			// IE
			 btn.attachEvent('onclick',function(e) {
                                // Event.srcElement : A reference to the Window, Document, 
                                // or Element object that generated the event.
				alert(e.srcElement.value);
			});
		} else {
			// 非IE
			btn.addEventListener('click',function(e) {
				//alert(this.value);
				alert(e.target.value);
			},false);
		}
	}

<BODY οnlοad="init();">
  <input name="test1" type="button" id="button1" value="click me" />
 </BODY>
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值