此代码从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();
});
}
答案 0 :(得分:0)
在i
中使用colorize
时,您期望task1background.style.background = task1[i].style.background;
的价值是什么?
colorize
mouseover
在i
事件侦听器中执行时,所有循环都已终止,因为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}}