使用for循环在数组中的每个元素之间设置延迟
问题描述:
我试图更改数组中每个元素的不透明度,但每个元素之间有一个轻微的延迟。我已经尝试了以下简化代码片段的一些变体,但每次它们都会随着延迟而立即更改或者没有任何变化。这个代码的正确语法是什么?使用for循环在数组中的每个元素之间设置延迟
for (let i = 0; i < testArray.length; i++) {
setTimeout(function() {testArray[i].style.opacity = ".5"}, 500);
}
答
由于您使用的是let
异步性不是问题,所以它只是timing.You只需要更改
setTimeout(function() {testArray[i].style.opacity = ".5"}, 500);
要
setTimeout(function() {testArray[i].style.opacity = ".5"}, 500*(i+1));
这将增加的500毫秒量等500,1000,1500设置计时器的项目等
答
的情况下,使用setInterval
尝试它没有与setTimeout
喜欢的工作如下:
var counter = 0;
var arrayLength =testArray.length;
var refOfSetInterval;
function changeOpacity(){
if(counter < arrayLength){
testArray[counter].style.opacity = ".5";
counter++;
}
else{
clearInterval(refOfSetInterval);
}
}
refOfSetInterval = setInterval(changeOpacity,1000);
答
您可以使用$('').slideUp(2000);
方法你的两个元素之间的延迟,我用这几个times.its工作正常
使用'的setTimeout(函数(){testArray [i]中。 style.opacity =“.5”},500 *(i + 1));' – Viney
如果你被卡住了--https://jsfiddle.net/xjLjt42z/ – Viney
@Novice你可以添加一个答案。这似乎是以前在这里会问到的,但我找不到一个好的重复。 – JLRishe