Javascript 文档中已单击链接的警报索引

Javascript 文档中已单击链接的警报索引,javascript,jquery,dom,closures,alert,Javascript,Jquery,Dom,Closures,Alert,需要编写函数来警告文档中已单击链接的索引。 例如: [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<

需要编写函数来警告文档中已单击链接的索引。 例如:

 [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]
请帮助我修复错误,因为您链接了jquery:

如果您不想使用
id
来存储索引,则可以创建
数据索引

实际事件发生在for循环已经完成运行之后的某个时间,因此它的索引是最后一个值。您需要创建某种闭包,为每个事件处理程序唯一地保留
i
的值,以便每个事件处理程序都可以访问自己的值。有几种不同的方法可以做到这一点,但都涉及将
i
值传递给每个事件处理程序的函数

演示@

var as=document.getElementsByTagName('a');

对于(var i=0,j=as.length;我想我误解了你的问题。你不想提醒链接中的任何内容,但与其他链接相比的实际位置是吗?就像facebook会避免1一样,雅虎会提醒0?是吗?可能重复
对于(i=as.length-1;i>=0;i--)而不是
对于(var i=0,j=as.length;iSure,您可以使用其中一个:)
var as = document.getElementsByTagName('a');
  for (i = as.length; i>= 0; i--) {
    as[i].onclick = function() {
      alert(i);
    }
  }
$('a').each(function(a, b){
    $(this).attr('id', a).on('click', function(e){
        e.preventDefault();
        alert($(this).attr('id'));
    });
});
$('a').each(function(a, b){
    $(this).attr('data-index', a).on('click', function(e){
        e.preventDefault();
        alert($(this).attr('data-index'));
    });
});
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));
}