javascript的问题,onclick只触发一次,为什么?

碰到一个棘手的问题,发到首页大家帮忙看一下。下面的代码用两个方式添加事件,但是不管怎么添加,按钮的onclick只会触发一次,第二次点击的时候就没有反应了。如果将document.body.innerHTML="..."换成alert("..."),居然又可以了,很奇怪,为什么?

 

 

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>
    
<title>javascript事件</title>    
</head>
<body>
   
<input type="button" id="btn3" value="按钮3" />
   
<br />
</body>
<script type="text/javascript">
   
var btn3 = document.getElementById("btn3");    
   btn3.onclick 
= function(){ 
        document.body.innerHTML 
+= "btn3 clicked! <br />";
   }
   
if(document.all){
        btn3.attachEvent(
"onclick",function(){document.body.innerHTML += "btn3 clicked! <br />";})
   } 
else {
        btn3.addEventListener(
"click",function(){document.body.innerHTML += "btn3 clicked! <br />"},false);
   }
</script>
</html>

 

 

 

刚才在csdn上提问,发现了出问题的地方。

因为innerHTML是重新加载html,一些动态绑定的事件或样式都失效了。

所以在调用innerHTML后html被重新加载,绑定的事件就不见了。

 

修改方法:不要使用innerHTML,改为使用下面的方法:

 

 

document.body.appendChild(document.createTextNode("btn3 clicked! "));
document.body.appendChild(document.createElement("
<br />"));

 

 

 

posted on 2010-06-28 10:12  zhangle  阅读(6620)  评论(5)    收藏  举报