需要编写函数来提醒文档中单击链接的索引。 例如:
[html]
<body>
Links:<br/>
<a href="//www.yahoo.com">Yahoo!</a><br/>
<a href="//www.facebook.com">Facebook</a><br/>
<a href="//www.google.com">Google</a><br/>
</body>
[/html]
我的功能:
var as = document.getElementsByTagName('a');
for (i = as.length; i>= 0; i--) {
as[i].onclick = function() {
alert(i);
}
}
请帮我修复错误
答案 0 :(得分:2)
实际事件发生在你的for循环已经完成运行之后的某个时间,因此它的索引是最后一个值。您需要创建某种闭包,为每个事件处理程序唯一地保留
i
的值,以便它们每个都可以访问自己的值。有几种不同的方法可以做到这一点,但都涉及将i
值传递给每个事件处理程序的函数。
演示@ fiddle
var as = document.getElementsByTagName('a');
for (var i=0, j=as.length; i<j; i++) {
var link = as[i];
(function(i){
link.onclick = function() {
alert (i);
}
}(i));
}
答案 1 :(得分:0)
由于您链接了jquery: DEMO
$('a').each(function(a, b){
$(this).attr('id', a).on('click', function(e){
e.preventDefault();
alert($(this).attr('id'));
});
});
如果您不想使用id
来存储索引,那么您可以创建data-index
:
$('a').each(function(a, b){
$(this).attr('data-index', a).on('click', function(e){
e.preventDefault();
alert($(this).attr('data-index'));
});
});