每当我点击页面时,我想更改标题(h1)的背景颜色。 这是我的代码:
document.addEventListener('click', func);
function func(){
var mainHeading = document.querySelector('h1');
var colors = ['cyan', 'black', 'brown'];
for(let b = 0; b <= colors.length; b++){
mainHeading.style.backgroundColor = colors[b];
}
}
答案 0 :(得分:6)
你不应该使用for
循环。
只需使用变量跟踪您目前所处的颜色:
let color = 0; // Variable to keep track of the color
let colors = ['cyan', 'black', 'brown'];
document.addEventListener('click', func);
function func() {
let mainHeading = document.querySelector('h1');
color = color < colors.length - 1 ? color+1 : 0; //Increment your color or reset it
mainHeading.style.backgroundColor = colors[color];
}
&#13;
<h1>Test</h1>
&#13;
答案 1 :(得分:1)
您可以使用click
相反,您需要跟踪最后使用的颜色并更新每个事件。
此外,每次处理事件时都不需要声明颜色数组。您可以只声明一次(在处理程序之外)并多次使用它。
有些事情:
var currentColorIndex = 0;
var colors = ['cyan', 'black', 'brown'];
document.addEventListener('click', func);
function func() {
var mainHeading = document.querySelector('h1');
// reset color
if (currentColorIndex >= colors.length) {
currentColorIndex = 0;
}
mainHeading.style.backgroundColor = colors[currentColorIndex];
currentColorIndex++;
}
<h1>Title</h1>
答案 2 :(得分:0)
您需要保存颜色的状态。否则,for循环将始终将颜色设置为最后一个元素
document.addEventListener('click', func);
function func(){
var colors = ['cyan', 'black', 'brown'];
var idx = ((this.idx ? this.idx : 0) + 1) % colors.lengh;
this.idx = idx;
var mainHeading = document.querySelector('h1');
mainHeading.style.backgroundColor = colors[idx];
}
}