我正在jQuery中进行一些超时但是我的超时值出现了问题。 所以,我得到了一个值数组(例如:[“2490”,“4200”]),我希望我的超时在2490ms后打印数组的值,然后返回0并最终打印下一个值4200ms后的数组。但它永远不会回到0
Actualy,这是jQuery代码:
var array = ['2490', '4200'];
var mytimeout;
for (var i = 0; i < array.length; ++i)
{
doTimeout(i);
clearTimeout(mytimeout);
}
function doTimeout(i) {
mytimeout = setTimeout(function() {
$('#text').append(array[i]);
}, array[i]);
}
JSFIDDLE :https://jsfiddle.net/2aftscou/
所以一切似乎都有效,除了我希望我的计时器在结束时重新初始化为0(这就是我使用 clearTimeout ()的原因,但它在这里不起作用情况)。
我真的不知道该怎么做
答案 0 :(得分:1)
这不起作用。你的超时将在开始后被杀死。在执行旧的超时后,您必须开始新的超时。
像这样的东西
function doTimeout(i) {
mytimeout = setTimeout(function() {
$('#text').append(array[i]);
i++;
if (i<array.length) {
doTimeout(i)
}
}
}
答案 1 :(得分:0)
您当前的实施正在立即清除超时。您可以将超时与此类链接一起链接
var array = ['2490', '4200'];
var mytimeout;
function doTimeout(i) {
mytimeout = setTimeout(function() {
$('#text').append(array[i]);
if (i <= array.length)
doTimeout(i + 1);
}, array[i]);
}
doTimeout(0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="text">
</p>