JS动态添加事件

jzkangta 2009-05-20 11:09:55

function trackLinks(){
var Links = document.getElementsByTagName( 'A' );
for( var i = 0; i < Links.length; i++ )
   {
if (window.attachEvent)
{
//支持 IE
Links[i].attachEvent("onclick", function () { trackClick(i) });
}
else
{
//支持 FF
Links[i].addEventListener("click", function () { trackClick(i)}, false);

}
}


}

function trackClick(i){
alert(i);

}


请教一下为什么function trackClick(i){
alert(i);

}方法里alert的永远是最后一个i?
PS:今天CSDN是不是有问题了?早上发了一个类似的问题,看到有人回答,可是怎么也点不进去,报页面出现错误,郁闷,其他功能正常
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjf0921 2009-05-20
  • 打赏
  • 举报
回复
修改一下试试:

<script language="JavaScript">
function trackLinks(){
var links = document.getElementsByTagName( 'A' );
for( var i = 0; i < links.length; i++ ) {
links[i].val = i;
if (window.attachEvent)
{
//支持 IE
links[i].attachEvent("onclick", function () { trackClick(window.event.srcElement.val) });
}
else
{
//支持 FF
links[i].addEventListener("click", function (event) { trackClick(event.target.val)}, false);

}
}


}

function trackClick(i){
alert(i);
}

trackLinks();
</script>
jzkangta 2009-05-20
  • 打赏
  • 举报
回复
十分感谢
2009-05-20
  • 打赏
  • 举报
回复
这样试下.


function trackLinks(){
var Links = document.getElementsByTagName( 'A' );
for( var i = 0; i < Links.length; i++ )
   {
(function(i){if (window.attachEvent)
{
//支持 IE
Links[i].attachEvent("onclick", function () { trackClick(i) });
}
else
{
//支持 FF
Links[i].addEventListener("click", function () { trackClick(i)}, false);

}})(i);
}


}

function trackClick(i){
alert(i);

}

87,904

社区成员

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

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