Javascript 如何在onmouseover时获取元素的索引值?

Javascript 如何在onmouseover时获取元素的索引值?,javascript,indexing,click,this,onmouseover,Javascript,Indexing,Click,This,Onmouseover,我试图在onmouseover时获取元素的索引号。 我可以用jQuery轻松做到这一点,但原生javascript是防弹的/: 试试这个: function callback(i) { return function() { this.style.background = "red"; alert(i); }; } for (var i = 0; i < ele.children.length; i++) { ele.childr

我试图在onmouseover时获取元素的索引号。 我可以用jQuery轻松做到这一点,但原生javascript是防弹的/:

试试这个:

function callback(i) {
    return function() {
        this.style.background = "red";
        alert(i);
    };
}

for (var i = 0; i < ele.children.length; i++) {
    ele.children[i].onmouseover = callback(i);
}
这是因为我已被覆盖,请将其存储在属性中:

ele.children[i].onmouseover = function() {
    this.style.background='red';
    alert(this.getAttribute('data-index'));
};
ele.children[i].setAttribute('data-index', i);

或使用闭包:

ele.children[i].onmouseover = (function (index) {
    return function () {
        this.style.background = 'red';
        alert(index);
    };
}(i));

使用立即数函数修复当前迭代的i值:

for(i=0; i<ele.children.length;i++){
    (function(i) {
        ele.children[i].onmouseover = function() {
            this.style.background='red';
            alert(i);
        }
    }(i));
}

这是一个更新的版本。

在jQuery中,生命太短暂了,不能不这样做!防弹的?或者你的意思是快?我不会说它是防弹的,但也许你是指什么different@LeeTaylor,是的,但我希望jQuery用户知道没有jQuery怎么做,否则他们的代码会很差。@gdoron是的,这就是我在这里的目的:
for(i=0; i<ele.children.length;i++){
    (function(i) {
        ele.children[i].onmouseover = function() {
            this.style.background='red';
            alert(i);
        }
    }(i));
}