innerHTML属性改变后,之前用setAttribute设置的事件响应失效的问题

luoluonet 2005-07-07 10:59:32
看一个简单的例子说明这个问题:

----------------------------------------------------------
<div id="d">
<table>
<tr>
<td id="t">aaa</td>
</tr>
</table>
</div>
<script language="javascript">
t.setAttribute("onmouseover", function() {alert("a")});
alert(t.onmouseover);
str = "";
d.innerHTML += str;
alert(t.onmouseover);
</script>
----------------------------------------------------------

程序中d.innerHTML += str一句操作了innerHTML属性以后,那个td之前用setAttribute方法设置的onmouseover响应函数的就失效了,第二个alert出来是null。不知道是什么原因,有没有什么解决办法,请各位指教,谢谢!
...全文
181 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
luoluonet 2005-07-16
感谢各位!
回复
cxz7531 2005-07-09
innerHTML从新设置,dom就重构了
回复
springwood 2005-07-09
你的innerHTML把你的setAttribute给冲掉了.把innerHTML赋完值后再setAttribute.
<div id="d">
<table>
<tr>
<td id="t">aaa</td>
</tr>
</table>
</div>
<script language="javascript">
t.setAttribute("onmouseover", function() {alert("a")});
alert(t.onmouseover);
str = "";
d.innerHTML += str;
t.setAttribute("onmouseover", function() {alert("a")});
alert(t.onmouseover);
</script>
回复
JK_10000 2005-07-08
d.innerHTML += str;


---->>>>

d.insertAdjacentHTML("beforeEnd",str);
回复
Minisheep 2005-07-08
t=document.getElementById("t");
d=document.getElementById("d");

一开始加上这两句就没问题
回复
发动态
发帖子
JavaScript
创建于2007-09-28

8.4w+

社区成员

Web 开发 JavaScript
申请成为版主
社区公告
暂无公告