顺序写反了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>动态注册事件 </title></head><body>
<form name="form1" method="post" action="" >
<input type="button" id="btn" value="注册事件方法" />
</form>
<script type="text/javascript">
var obj = document.getElementById("btn");
if(window.addEventListener){ // Mozilla, Netscape, Firefox
obj.addEventListener( 'click ', alert( '第一个方法(非IE浏览器) '), false);
obj.addEventListener( 'click ', alert( '第二个方法(非IE浏览器) '), false);
obj.addEventListener( 'click ', fun3, false);
}
else{ // IE
obj.attachEvent( 'onclick', function(){alert( '第一个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', function(){alert( '第二个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', fun3);
}
function fun3(){
alert("第三个方法(IE浏览器)");
}
</script>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>动态注册事件 </title></head><body>
<form name="form1" method="post" action="" >
<input type="button" id="btn" value="注册事件方法" />
</form>
<script type="text/javascript">
var obj = document.getElementById("btn");
if(window.addEventListener){ // Mozilla, Netscape, Firefox
obj.addEventListener( 'click ', alert( '第一个方法(非IE浏览器) '), false);
obj.addEventListener( 'click ', alert( '第二个方法(非IE浏览器) '), false);
obj.addEventListener( 'click ', fun3, false);
}
else{ // IE
obj.attachEvent( 'onclick', function(){alert( '第一个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', function(){alert( '第二个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', fun3);
}
function fun3(){
alert("第三个方法(IE浏览器)");
}
</script>
</body>
</html>
obj.attachEvent( 'onclick ', function(){alert( '第一个方法(IE浏览器) ');});
==>
obj.attachEvent( 'onclick', function(){alert( '第一个方法(IE浏览器) ');});
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" / >
<title >动态注册事件 </title ></head ><body >
<form name="form1" method="post" action="" >
<input type="button" id="btn" value="注册事件方法" / >
</form >
<script type="text/javascript" >
var obj = document.getElementById("btn");
if(window.addEventListener){ // Mozilla, Netscape, Firefox
obj.addEventListener( 'click', function(){alert( '第一个方法(非IE浏览器) ')}, false);
obj.addEventListener( 'click', function(){alert( '第二个方法(非IE浏览器) ')}, false);
obj.addEventListener( 'click', fun3, false);
}
else{ // IE
obj.attachEvent( 'onclick', function(){alert( '第一个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', function(){alert( '第二个方法(IE浏览器) ');});
obj.attachEvent( 'onclick', fun3);
}
function fun3(){
alert("第三个方法(IE浏览器)");
}
</script >
</body >
</html >
<body>
<form name="form1" method="post" action="" >
<input type="button" id="btn" value="注册事件方法" / >
</form>
<script type="text/javascript">
if(!window.attachEvent && window.addEventListener)
{
window.attachEvent = HTMLElement.prototype.attachEvent=
document.attachEvent = function(en, func, cancelBubble)
{
var cb = cancelBubble ? true : false;
this.addEventListener(en.toLowerCase().substr(2), func, cb);
};
}var obj = document.getElementById("btn");
obj.attachEvent('onclick', function(){alert( '第一个方法(IE浏览器) ');});
obj.attachEvent('onclick', function(){alert( '第二个方法(IE浏览器) ');});
obj.attachEvent('onclick', fun3);function fun3()
{
alert("第三个方法(IE浏览器)");
}
</script>
为什么在IE中,添加的事件执行的循序不是按照添加的顺序来的,而是反的。即先执行alert("第三个方法(IE浏览器)");,然后再alert( '第二个方法(IE浏览器) ');,最后才alert( '第一个方法(IE浏览器) ');??
..
else{ // IE
obj.('onclick', function(){alert('第一个方法(IE浏览器)');});
obj.attachEvent('onclick', function(){alert('第二个方法(IE浏览器)');});
..1.首先:
obj.('onclick',
应该改为:
obj.attachEvent
2.如JGood所示需要把顺序调换1下:<form>
..
</form>
<script>..</script>否则obj is null .
原因不知,但是是在调试的时候发现的。VS 提示 obj is null
应该是: obj.addEventListener('click', function() { alert('第一个方法(非IE浏览器) ') }, false);
obj.addEventListener('click', function() { alert('第二个方法(非IE浏览器) ') }, false);
obj.addEventListener('click', fun3, false);而不是 obj.addEventListener('click', alert('第一个方法(非IE浏览器)'), false);
obj.addEventListener('click', alert('第二个方法(非IE浏览器)'), false);
obj.addEventListener('click', fun3, false);基于以上高人的对比得出的。估计是语法问题。