Javascript Jquery在循环中使用setTimeout
我想将p的值从10更改为1,延迟10秒Javascript Jquery在循环中使用setTimeout,javascript,jquery,timer,Javascript,Jquery,Timer,我想将p的值从10更改为1,延迟10秒 for (var i=0;i<9;i++) { setTimeout(function(){$('#timer').text(10-i)}, 1000); } for(var i=0;i使用setInterval实现以下目标:- var i=0; var timer= setInterval(function(){ i++; if(i==10){ clearI
for (var i=0;i<9;i++) {
setTimeout(function(){$('#timer').text(10-i)}, 1000);
}
for(var i=0;i使用setInterval实现以下目标:-
var i=0;
var timer= setInterval(function(){
i++;
if(i==10){
clearInterval(timer);
}
$('#timer').text(10-i);
}, 1000);
在您的代码中,for循环不会等待setTimeout
完成。因此,在setTimeout
等待时,for循环
结束。因此,当for循环
结束时,一秒钟后,..i的值为9,显示10-9=1
以下是使用setInterval实现以下目的的链接:-
var i=0;
var timer= setInterval(function(){
i++;
if(i==10){
clearInterval(timer);
}
$('#timer').text(10-i);
}, 1000);
在您的代码中,for循环不会等待setTimeout
完成。因此,在setTimeout
等待时,for循环
结束。因此,当for循环
结束时,一秒钟后,..i的值为9,显示10-9=1
以下是使用setInterval实现以下目的的链接:-
var i=0;
var timer= setInterval(function(){
i++;
if(i==10){
clearInterval(timer);
}
$('#timer').text(10-i);
}, 1000);
在您的代码中,for循环不会等待setTimeout
完成。因此,在setTimeout
等待时,for循环
结束。因此,当for循环
结束时,一秒钟后,..i的值为9,显示10-9=1
以下是使用setInterval实现以下目的的链接:-
var i=0;
var timer= setInterval(function(){
i++;
if(i==10){
clearInterval(timer);
}
$('#timer').text(10-i);
}, 1000);
在您的代码中,for循环不会等待setTimeout
完成。因此,在setTimeout
等待时,for循环
结束。因此,当for循环
结束时,一秒钟后,..i的值为9,显示10-9=1
这是一个链接,您需要这样的东西,它使用setInterval
,并且通过清除间隔来处理内存泄漏
var i = 10, intId = setInterval(function () {
if (i > 0) $('#timer').text(--i); else clearInterval(intId);
}, 1000);
您需要这样的东西,它使用setInterval
,并且通过清除间隔来处理内存泄漏
var i = 10, intId = setInterval(function () {
if (i > 0) $('#timer').text(--i); else clearInterval(intId);
}, 1000);
您需要这样的东西,它使用setInterval
,并且通过清除间隔来处理内存泄漏
var i = 10, intId = setInterval(function () {
if (i > 0) $('#timer').text(--i); else clearInterval(intId);
}, 1000);
您需要这样的东西,它使用setInterval
,并且通过清除间隔来处理内存泄漏
var i = 10, intId = setInterval(function () {
if (i > 0) $('#timer').text(--i); else clearInterval(intId);
}, 1000);
对不起,我找到了另一个解决办法:)我希望你满意
var count = 10;
function run(){
$('#timer').text(count--);
if(count>=0) {
setTimeout(run, 1000);
}
}
run();
对不起,我找到了另一个解决办法:)我希望你满意
var count = 10;
function run(){
$('#timer').text(count--);
if(count>=0) {
setTimeout(run, 1000);
}
}
run();
对不起,我找到了另一个解决办法:)我希望你满意
var count = 10;
function run(){
$('#timer').text(count--);
if(count>=0) {
setTimeout(run, 1000);
}
}
run();
对不起,我找到了另一个解决办法:)我希望你满意
var count = 10;
function run(){
$('#timer').text(count--);
if(count>=0) {
setTimeout(run, 1000);
}
}
run();
您可以使用递归函数来构建此函数:
您可以使用递归函数来构建此函数:
您可以使用递归函数来构建此函数:
您可以使用递归函数来构建此函数:
当您需要在异步方法中使用同步处理的数据时,这是此类情况的常见问题。
在您的例子中,您提高循环-它的同步过程,它增加i
,并运行代码,您将文本放在右括号中。所以for
增加i
并在每次迭代中运行代码。在每次迭代中设置新的超时,应该在一段时间内运行,它是异步的。那么,第一次setTimeout
start发生了什么循环已经完成,i
已经是10,并且setTimeout
使用其回调
要解决此任务,您必须使用closure-instally invoke函数,该函数在每次迭代时都将调用i
作为参数,并在该函数中设置超时。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:
var timerNode = $('#timer'),
stepInSec = 1;
for (var i=10; i>=0; i--) (function(t) {
window.setTimeout(function() {
timerNode.text(t);
}, (10-t)*stepInSec*1000)
}(i))
当您需要在异步方法中使用同步处理的数据时,这是此类情况的常见问题。
在您的例子中,您提高循环-它的同步过程,它增加i
,并运行代码,您将文本放在右括号中。所以for
增加i
并在每次迭代中运行代码。在每次迭代中设置新的超时,应该在一段时间内运行,它是异步的。那么,第一次setTimeout
start发生了什么循环已经完成,i
已经是10,并且setTimeout
使用其回调
要解决此任务,您必须使用closure-instally invoke函数,该函数在每次迭代时都将调用i
作为参数,并在该函数中设置超时。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:
var timerNode = $('#timer'),
stepInSec = 1;
for (var i=10; i>=0; i--) (function(t) {
window.setTimeout(function() {
timerNode.text(t);
}, (10-t)*stepInSec*1000)
}(i))
当您需要在异步方法中使用同步处理的数据时,这是此类情况的常见问题。
在您的例子中,您提高循环-它的同步过程,它增加i
,并运行代码,您将文本放在右括号中。所以for
增加i
并在每次迭代中运行代码。在每次迭代中设置新的超时,应该在一段时间内运行,它是异步的。那么,第一次setTimeout
start发生了什么循环已经完成,i
已经是10,并且setTimeout
使用其回调
要解决此任务,您必须使用closure-instally invoke函数,该函数在每次迭代时都将调用i
作为参数,并在该函数中设置超时。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:
var timerNode = $('#timer'),
stepInSec = 1;
for (var i=10; i>=0; i--) (function(t) {
window.setTimeout(function() {
timerNode.text(t);
}, (10-t)*stepInSec*1000)
}(i))
当您需要在异步方法中使用同步处理的数据时,这是此类情况的常见问题。
在您的例子中,您提高循环-它的同步过程,它增加i
,并运行代码,您将文本放在右括号中。所以for
增加i
并在每次迭代中运行代码。在每次迭代中设置新的超时,应该在一段时间内运行,它是异步的。那么,第一次setTimeout
start发生了什么循环已经完成,i
已经是10,并且setTimeout
使用其回调
要解决此任务,您必须使用closure-instally invoke函数,该函数在每次迭代时都将调用i
作为参数,并在该函数中设置超时。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:
var timerNode = $('#timer'),
stepInSec = 1;
for (var i=10; i>=0; i--) (function(t) {
window.setTimeout(function() {
timerNode.text(t);
}, (10-t)*stepInSec*1000)
}(i))
var-brea