我用如下代码可以实现循环动态创建div了,但是动态创建的事件有问题,
执行如下的代码产生的事件显示的总是最后一个创建div的id
不知错误在哪里?<HTML>
<HEAD>
<TITLE> 动态创建div和事件 </TITLE>
<style type="text/css">
.mydiv
{
width : 300px ;
height:300px;
background-color :#00ff00 ;
}
</style>
</HEAD>
<script>
function crdiv() //动态创建div和事件
{
var i,j;
var fo = document.getElementById('fdiv');
for (i=0;i<3;i++)
{
for (j = 0;j<3;j++)
{
var l = i * 300;
var t = j * 300;
var o = document.createElement("div");
var id = "div" + i + j;
o.id = id;
o.className = "mydiv";
o.style.left = l + "px";
o.style.top = t + "px";
o.style.position = "absolute";
o.innerText = id;
// if ((i ==0)&(j==0))
// {
o.onclick= function(){showid(id)}; //创建后执行总是显示最后一个id号
// o.attachEvent("onclick",function(){showid(id)});
// o.addEventListener("click",function(){showid(id)},false);
// }
fo.appendChild(o);
}
}
}
function showid(os)
{
var o = document.getElementById(os);
alert(o.id);
}
</script>
<BODY>
<input id="Button1" type="button" value="button" onclick = "crdiv()" />
<div id="fdiv" style="width: 223px; height: 177px">
</div>
</BODY>
</HTML>
执行如下的代码产生的事件显示的总是最后一个创建div的id
不知错误在哪里?<HTML>
<HEAD>
<TITLE> 动态创建div和事件 </TITLE>
<style type="text/css">
.mydiv
{
width : 300px ;
height:300px;
background-color :#00ff00 ;
}
</style>
</HEAD>
<script>
function crdiv() //动态创建div和事件
{
var i,j;
var fo = document.getElementById('fdiv');
for (i=0;i<3;i++)
{
for (j = 0;j<3;j++)
{
var l = i * 300;
var t = j * 300;
var o = document.createElement("div");
var id = "div" + i + j;
o.id = id;
o.className = "mydiv";
o.style.left = l + "px";
o.style.top = t + "px";
o.style.position = "absolute";
o.innerText = id;
// if ((i ==0)&(j==0))
// {
o.onclick= function(){showid(id)}; //创建后执行总是显示最后一个id号
// o.attachEvent("onclick",function(){showid(id)});
// o.addEventListener("click",function(){showid(id)},false);
// }
fo.appendChild(o);
}
}
}
function showid(os)
{
var o = document.getElementById(os);
alert(o.id);
}
</script>
<BODY>
<input id="Button1" type="button" value="button" onclick = "crdiv()" />
<div id="fdiv" style="width: 223px; height: 177px">
</div>
</BODY>
</HTML>
看了这个就不会再有疑问了