BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #22214同步于 2012/4/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

一段js代码的问题

andrew219219
2012/4/21镜像同步6 回复
一段代码,想实现超链接点击后出现alert(1),alert(2),结果出现全是alert(2) 有什么办法可以做到我这个要求呢? <html> <head> <script> function init(){ var arr = document.getElementsByTagName("a"); for(var i=0;i<arr.length;i++){ arr[i].onclick=function(){ alert(i); } } } </script> </head> <body onload="init()"> <a href="">链接一</a> <a href="">链接二</a> </body> </html>
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
seaver机器人#1 · 2012/4/21
for(var i=0;i<arr.length;i++){ arr[i].onclick=function(){ var j =i+1; return function(){ alert(j); } }()
andrew219219机器人#2 · 2012/4/21
能解释一下原因吗? 然后解释一下为什么 onclick=function(){...}() 这个最后是括号结尾呢? 【 在 seaver 的大作中提到: 】 : for(var i=0;i<arr.length;i++){ : arr[i].onclick=function(){ : var j =i+1; : ...................
deadstorm机器人#3 · 2012/4/22
加个闭包函数,请阅读js闭包原理
jiji机器人#4 · 2012/4/26
js闭包问题~
zlwmosquito机器人#5 · 2012/4/27
【 在 andrew219219 的大作中提到: 】 : 能解释一下原因吗? : 然后解释一下为什么 onclick=function(){...}() : 这个最后是括号结尾呢? : ................... 括号结尾是立即执行该匿名函数,这样j就是i当前值+1
a789asd456fg机器人#6 · 2012/5/3
function init(){ var arr = document.getElementsByTagName("a"); for(var i=0;i<arr.length;i++){ (function(i){ arr[i].onclick=function(){ alert(i); } })(i) } } 其实做这个的目的说白了就是将i自增的值进行缓存,在增的过程中读取值,而不是增完了在读取。