for循环不能使用我的数组

时间:2014-10-24 01:22:30

标签: javascript arrays javascript-events

此代码从div数组中获取背景颜色,并使用它生成另一个div。我的问题是我可以在task1 [i] .style.background中放置0-2(0-2是原始div的数组值)中的任何值,但是当我把i放到循环中时,我给出了特定于一个人在它上面踩刹车。我不能仅使用JQuery,JavaScript。

编辑:我希望task1 [i] .style.background等于它从通过数组的循环中盘旋的特定div的背景颜色。

var task1 = document.querySelectorAll('.t1_colors');
var task1background = document.querySelector('#task1');

var white = function() {
task1background.style.background = 'white';
}

for (var i = 0; i < task1.length; ++i) {
task1[i].addEventListener('mouseover', function () {
    colorize();
});
}

//Something wrong with i
var colorize = function() {
task1background.style.background = task1[i].style.background;
}

for (var i = 0; i < task1.length; ++i) {
task1[i].addEventListener('mouseout', function() {
        white();
});
}

1 个答案:

答案 0 :(得分:0)

i中使用colorize时,您期望task1background.style.background = task1[i].style.background; 的价值是什么?

colorize

mouseoveri事件侦听器中执行时,所有循环都已终止,因为task1.length值已达到i

您必须捕获当前的for (var i = 0; i < task1.length; ++i) { task1[i].addEventListener('mouseover', (function (index) { return function() { colorize(index); }; })(i)); } 值。

将其更改为

var colorize = function(index) {
  task1background.style.background = task1[index].style.background;
}

{{1}}