日期:2014-05-16 浏览次数:20467 次
<!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=utf-8" /> <title>无标题文档</title> </head> <script language="javascript"> function appendTo(str,root){ root.innerHTML += str; return root.childNodes[root.childNodes.length - 1]; } window.onload = function(){ var tNode = document.getElementById("t"); for (i = 0; i <= 5; i++) { var str = "<div id = 'tt'>"+i+"</div>"; appendTo(str,tNode).onclick = function (){ alert(i); } } } </script> <style type="text/css"> #tt{ width:20px; margin-top:5px; padding:5px; border: 1px solid #0000FF} </style> <body> <div id="t"></div> </body> </html>
window.onload = function(){ var tNode = document.getElementById("t"); for (i = 0; i <= 5; i++) { var str = "<div id = 'tt'>"+i+"</div>"; appendTo(str,tNode).onclick = function (){ alert(i); } } }
------解决方案--------------------
window.onload = function(){
var tNode = document.getElementById("t");
for (i = 0; i <= 5; i++){
var str = "<div class = 'tt'>"+i+"</div>";
appendTo(str,tNode);
}
//innerHTML方法会将已有的方法清除
//要么使用appendChild动态创建节点
//要么添加完元素后再统一增加事件
for (j = 0; j < tNode.childNodes.length; j++){
(function(k){
tNode.childNodes[k].onclick = function (){
alert(k);
}
})(j);
}
}
------解决方案--------------------
for循环中的appendTo(str,tNode)这个返回值只会记住最后一个的返回值,可以按照3楼的办法解决这个问题。