【发布时间】:2015-08-29 13:06:25
【问题描述】:
我正在尝试不断循环遍历一组数值,这些数值将作为触发另一个函数的延迟值传递给 setInterval 函数。这是我所拥有的:
HTML:
<p>On</p>
JavaScript:
$(document).ready(function(){
var timing = [5000, 10000, 17000, 8000, 14000, 9000, 12000, 8000, 20000, 7000, 13000, 7000, 17000, 8000, 13000, 12000, 18000]
//function to change
function change(){
var p = $("p").html();
if(p === "On"){
$("p").html("Off");
} else {
$("p").html("On");
}
}
function myFunction(){
for (var i = 0; i < timing.length; i++){
var switchTime = timing[i];
setInterval(function(){
change();
},switchTime);
}
} myFunction();
});
我想让更改功能在不同的延迟时间连续触发。现在,当我运行它时,时间似乎不正确。任何建议表示赞赏。谢谢!
【问题讨论】:
-
究竟是什么不起作用?请描述您的期望和实际结果。
-
根据时间数组中的数字,我希望更改函数每隔 5、10、17、8、14 秒等连续触发一次。现在的结果是 p 标签中的文本正在改变,但不是在这些间隔内。我怀疑我的函数会保留以前的时间间隔。
-
这就是我的意思——你一遍又一遍地对同一个函数进行间隔,所以,当然你实际上可能有这些间隔,但这种印象是误导性的。
-
在循环中我的 setInterval 之后立即调用 clearInterval 以确保更改函数接收到正确的数字是否有意义?
-
可以工作,试一试!
标签: javascript arrays settimeout setinterval timedelay