<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),怎么回事,不好理解
解决方案 »
- js怎么取得ajax返回的数据???
- dh20156 关于遮罩 您的能给一个简单的示例么?文档感觉比较复杂
- javascript 如何获取制定层内的全部图片
- 为何无法通过getElementsByName()获取对象?
- 前端很弱无奈必须要写,请问:jquery函数传参数的问题
- js 中 alert、confirm 怎么弹出 指定标题的弹出窗口 ?有无javascript的帮助文档下载?
- 如何取得动态增加的table中的一个input
- 我在网上下载了一个JS特效,但发觉有两条导航条,请问怎么把JS自带的那个去掉呢?谢谢,代码在内
- 当“手指”指在嵌套在datagrid中的子控件的超链接上的时候,怎样显示显示。。。。。
- vue连接MQTT进行通信
- 一个js小函数的疑问
- JS字符串截取问题
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了请高手分析下看了半天还是不能深刻理解原理