为什么 setInterval 不能正常工作来改变元素的颜色? [关闭]

分享于2022年07月17日 javascript setinterval 问答
【问题标题】:为什么 setInterval 不能正常工作来改变元素的颜色? [关闭](Why doesn't setInterval work properly to change an element's color? [closed])
【发布时间】:2022-07-11 22:39:48
【问题描述】:

我创建了一个函数 addElements() ,它可以更改图像、正文的背景颜色和 p 标签的文本颜色。现在,当我运行以下代码时, setInterval 处的图像会无限变化,但颜色甚至不会改变一次。

function addElements() {
  var img = document.getElementById('img');
  var image = images[Math.floor(Math.random() * images.length)];
  img.src = image;

  var name = document.getElementById('name');
  var color = colors = colors[Math.floor(Math.random() * colors.length)];
  document.body.style.backgroundColor = color;
  name.setAttribute('color', color);
};

window.addEventListener('load', setInterval(addElements, 4321));

  • 请阅读 How to Ask 并提供 minimal reproducible example 。使用问题编辑器的生活演示功能。
  • name.setAttribute('color', color); — 没有元素,不是过时(也不应该使用),具有 color 属性。
  • window.addEventListener('load', setInterval(addElements, 4321)); — 在这里使用 addEventListener 毫无意义。你需要给它传递一个函数,而不是 setInterval 的返回值。
  • 4321 是一个奇怪的区间 :)
  • 为什么要替换颜色数组? color = colors = colors[... 这里好像错了

【解决方案1】:

好像行

var color = colors = colors[Math.floor(Math.random() * colors.length)];

包含错误。你应该删除 = colors

所以这条线是

var color = colors[Math.floor(Math.random() * colors.length)];

  • 令人尴尬的错误。我删除了它,它工作正常。非常感谢。