如何获得点击元素的索引号码?

时间:2011-03-02 10:07:25

标签: javascript

我的UL有5个Li,在li中它有一个href,而我点击a,它必须从ul显示它的索引号。例如,如果我点击3rd li,那么它应该是alet 3.因为我正在使用这个功能:

var titles = document.getElementById('bigscreen-titles');  if(titles){
    var links = titles.getElementsByTagName('a');

    for(i=0;i<links.length;i++){
        links[i].onclick = function(){
            alert(i);
        }
    }
}

但它总是显示5.即使我点击1st li,它显示相同,任何正确的方式..请

2 个答案:

答案 0 :(得分:1)

解决方案如下:

if(titles){
    var links = titles.getElementsByTagName('a');

    for(i=0;i<links.length;i++){
        links[i].onclick = function(currentIndex){
            return function () {
                alert(currentIndex);
            }
        }(i)
    }
}

外部函数称为立即函数。这意味着该函数在定义后立即执行。所以它返回一个新函数,即内部函数。这些函数获得currentIndex的引用。这被称为闭包。

答案 1 :(得分:0)

这种行为是由于'闭包'引起的,并且基本上是因为警报函数在循环结束后的某个时刻运行,此时'i'为5。

你应该能够通过简单的改变来解决这个问题......

if(titles){
    var links = titles.getElementsByTagName('a');

    for(i=0;i<links.length;i++){
        links[i].onclick = function(index){
           return function() {
               alert(index);
           }
        }(i)
    }
}