【发布时间】:2021-11-13 00:21:27
【问题描述】:
假设我有一个包含 100 个跨度元素的 html 网格,我想逐渐将这些跨度的颜色从跨度 [0] 更改为跨度 [100]。我下面的代码更改了跨度元素的颜色,但一次完成,然后在 3 秒后再次更改,但没有执行我想要的操作。理想情况下,我希望它逐渐改变颜色,然后在 3 秒后再次开始改变颜色,而第一个功能不断改变到 span[100]
var count = 1;
var ancestor = document.getElementById('hello');
var descendents = ancestor.getElementsByTagName('span');
var myColors = ['rgb(146, 168, 209)', 'rgb(136, 176, 75)', 'rgb(247, 202, 201)'];
var e, c;
function myLoop(count) {
setTimeout(function() {
for (i = 0; i < descendents.length; ++i) {
e = descendents[i];
c = e.style.color;
//pick color
e.style.color = myColors[Math.floor(Math.random() * myColors.length)];
}
count++;
if (count < descendents.length) {
myLoop(count);
}
}, 3000);
}
myLoop(count);
【问题讨论】:
-
能否在jsfiddle或codepen中提供HTML代码?
标签: javascript html loops for-loop delay