backgroundColor更改

时间:2018-04-06 13:26:31

标签: javascript dom

每当我点击页面时,我想更改标题(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];
    }
 } 

3 个答案:

答案 0 :(得分:6)

你不应该使用for循环。

只需使用变量跟踪您目前所处的颜色:

&#13;
&#13;
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;
&#13;
&#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];
    }
 }