Javascript 如何在onmouseover时获取元素的索引值?
我试图在onmouseover时获取元素的索引号。 我可以用jQuery轻松做到这一点,但原生javascript是防弹的/: 试试这个: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
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));
}