javascript动态事件传值出问题请高手帮一下感谢

gaowenzhen 2009-11-16 12:22:28
window.onload = function(){
var objet=$("autoimg").getElementsByTagName("a");
for(i=0;i<objet.length;i++){
oEventUtil.AddEventHandler(objet[i].getElementsByTagName("img")[0],'mouseover',function(){imgautoover(i)});
}
};
//幻灯图片事件
var imgautoover=function(img)
{
alert(img);//问题处:这里老是收到3 (不是想像中的1,2,3)
};

body
----------
<div id="autoimg">
<a href="#"><img src="images/test0.jpg" alt="01" /></a>
<a href="#"><img src="images/test0.jpg" alt="02" /></a>
<a href="#"><img src="images/test0.jpg" alt="03" /></a>
===========================
最终想要的效果是取得getElementsByTagName("img")[i]的src图片路径请高手帮一下感谢,
</div>
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangguifeng123 2009-11-16
  • 打赏
  • 举报
回复
学习呢、、、
xiaofan_sap 2009-11-16
  • 打赏
  • 举报
回复
恩 你这个市闭包问题 ,内层函数只能调用到外层循环标量的最终值,解决办法就是用匿名函数产生一个作用域,

for(i=0;i <objet.length;i++){
oEventUtil.AddEventHandler(objet[i].getElementsByTagName("img")[0],'mouseover',function(){imgautoover(i)});
}
};
//幻灯图片事件
(function{

//逆向处理的方法体
})()


sohighthesky 2009-11-16
  • 打赏
  • 举报
回复

//又 是闭包
for(i=0;i <objet.length;i++){
(function(i){
oEventUtil.AddEventHandler(objet[i].getElementsByTagName("img")[0],'mouseover',function(){imgautoover(i)});
})(i);
}
xiaofan_sap 2009-11-16
  • 打赏
  • 举报
回复
这么快就揭帖了 阿 后面的i是外层参数传入的入口,前面的i的值来自于后面i的传植!
gaowenzhen 2009-11-16
  • 打赏
  • 举报
回复
果然是高人,非常感谢谢在这之前都没有学过闭包方法

(function(i){
//这样写都没有用过,请问前的(i)理解,后一个(i)就不清用意.

}(i))

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧