我試圖更改數組中每個元素的不透明度,但每個元素之間有一個輕微的延遲。我已經嘗試了以下簡化代碼片段的一些變體,但每次它們都會隨着延遲而立即更改或者沒有任何變化。這個代碼的正確語法是什麼?使用for循環在數組中的每個元素之間設置延遲
for (let i = 0; i < testArray.length; i++) {
setTimeout(function() {testArray[i].style.opacity = ".5"}, 500);
}
我試圖更改數組中每個元素的不透明度,但每個元素之間有一個輕微的延遲。我已經嘗試了以下簡化代碼片段的一些變體,但每次它們都會隨着延遲而立即更改或者沒有任何變化。這個代碼的正確語法是什麼?使用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