<table border="0" cellspacing="0" cellpadding="1" width="250px" nowrap id="picquere">
<tr>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_12953320658Qp4_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/10/264428_1294657656AU3R_t.png" />
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/12/196894_1294825187d4Hi_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_1295333148ZxPE_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_1295333402p2Lz_t.jpg"/>
</td>
</tr>
</table>
</body><script>window.onload=function()
{
var obj=document.getElementById("picquere");
var objlist=obj.getElementsByTagName("img"); for(var i=0;i<objlist.length;i++)
{
objlist[i].onmouseover=function(){alert(i);}; //这里诡异,为每一个img对象添加的居然都是alert(5)
}
}
</script>
添加时间的代码居然objlist[i].onmouseover=function(){alert(i);}; 为每一个img对象添加的居然都是alert(5),怎么回事,不好理解
<tr>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_12953320658Qp4_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/10/264428_1294657656AU3R_t.png" />
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/12/196894_1294825187d4Hi_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_1295333148ZxPE_t.jpg"/>
</td>
<td>
<img src="http://home.blueidea.com/attachment/201101/18/404806_1295333402p2Lz_t.jpg"/>
</td>
</tr>
</table>
</body><script>window.onload=function()
{
var obj=document.getElementById("picquere");
var objlist=obj.getElementsByTagName("img"); for(var i=0;i<objlist.length;i++)
{
objlist[i].onmouseover=function(){alert(i);}; //这里诡异,为每一个img对象添加的居然都是alert(5)
}
}
</script>
添加时间的代码居然objlist[i].onmouseover=function(){alert(i);}; 为每一个img对象添加的居然都是alert(5),怎么回事,不好理解
window.onload=function()
{
var obj=document.getElementById("picquere");
var objlist=obj.getElementsByTagName("img"); for(var i=0;i<objlist.length;i++)
{
(function (x) {
objlist[x].onmouseover=function(){alert(x);};
})(i)
}
}查查闭包
这个算是比较常见的了。
for的同时,i++了,并且给objlist[i]添加事件了。
所以每个objlist都有事件。
但是,objlist[i]在mouseover的时候弹出来的i的时候又回到onload里面去找i了,这个时候i已经变成最大值了。
其他知识网上找吧,《javascript权威指南》上面对这个解释的挺好的,建议资金允许的话买本看看。
页面加载的时候,对这5个img都加了个onmouseover事件 alert(i);但是此时并没有触发这个事件。。但是i却在++一直加到了5 根据闭包的意思理解,就是这个i并没有被GC处理掉,依然在内存里面。。所以,每个都是5了请高手分析下看了半天还是不能深刻理解原理