好的,这就是我现在的代码:
(function slideshow(){
var arr = [first, second, third, forth];
for( var i = 0; i < arr.length; i++){
arr[i].addEventListener('click', function(){
alert(i);
});
}
var d = 0;
}());
我在最后一小时尝试做的事情并且悲惨地失败,是i
是数组中被点击元素的索引。现在alert(i)
总是返回4
而不是点击元素的索引号。
我想要发生的另一件事是让该值(indexOf被点击的元素)成为d
的值,它在for循环之外。
即。默认为d=0
,直到您点击arr[i]
然后d = i
为止。有什么想法我会怎么做?
答案 0 :(得分:2)
这是因为i
是i
循环后for
所拥有的值。 0
到3
是您的索引,4
是退出循环的值,因为它大于您的数组长度。
您需要做的是实际拥有一个存储在first
,second
等中的值,您可以抓住它。
您可以在元素中存储i
的实际值:
var arr = [first, second, third, forth];
for( var i = 0; i < arr.length; i++){
arr[i].setAttribute('data-index', i);
arr[i].addEventListener('click', function(){
alert(this.getAttribute('data-index'));
});
}