javascript - SetInterval 和 SetTimeout 迭代数组

标签 javascript loops settimeout setinterval

我想用 for 创建一个简单的迭代数组。但无法使该脚本工作...如果有人可以指导自学,我很感激任何想法!

    var colors = ['green', 'red', 'blue', 'grey', 'orange'];
    function chColor(){
    setInterval(
	 function(colors){
  	  for(var i = 0; i <= colors.lenght; i++){
			document.body.style.backgroundColor = Colors[i];
		}},3000)}
    (function(){setTimeout(function(){chColor()},3000);})();

最佳答案

您可以获取颜色索引并在每个间隔后递增,并使用余数运算符和数组长度进行调整。

您的问题:

  • 带有参数的函数的间隔,该参数永远不会被移交,因此它是未定义

  • for 区间内的循环,直接迭代并在最后使用使用的

  • 数组 Colors 不存在。 JavaScript 是区分大小写的语言。

  • 由于 for 循环,如果采用正确的数组,最终颜色始终相同。

  • setTimeout 的使用不明确,它将 chColor 的调用推迟了 3 秒。第一次颜色变化是 3 秒后......

function chColor(colors, i) {
    setInterval(
        function() {
            document.body.style.backgroundColor = colors[i];
            i++;
            i %= colors.length;
        },
        3000
    );
}

var colors = ['green', 'red', 'blue', 'grey', 'orange'];
chColor(colors, 0); // take colors as array and start with index zero

关于javascript - SetInterval 和 SetTimeout 迭代数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51010777/

相关文章:

JavaScript:GIF 文件丢失动画

javascript - 在循环中添加事件监听器 (mouseenter),但仅在 1500 毫秒后触发 - 清除超时问题

javascript - 在页面加载和随后的 ajax 回发时注册 jquery

javascript - 有没有办法使用 ASP 将命名空间添加到所有 html 标记?

javascript - 如何扩展 material-ui 组件

java - 使用for循环测试数字是否为奇数

Java for 循环输出

javascript - 将相邻重复值分组到数组中的最佳方法

setTimeout后的jquery函数

javascript - jQuery:如何正确暂停递归?