2012-01-14 61 views
0

我一直在为今天的大多数倒计时,现在我坚持循环。如果没有for循环,一切都会正常工作,倒计数到0并重新加载,但是for循环不会正确倒计数并跳过数字。我想在这里完成的是让计时器完全倒计时,在完成3次计数后,它将完全停止。我在这里做错了什么?如何循环使用jquery

var number = 25; 
var i; 

function countdown() { 
    $('#display').html("Redirecting in " + number + " second(s)."); 
    for (i = 0; i < 3; ++i) { 
     number--; 
     if (number < 0) { 
      window.location.reload(); 
      number = 0; 
     } 
    } 
    setTimeout(countdown, 1000); 
} 

$(document).ready(function() { 
    countdown(); 
}); 
+0

如果它在没有循环的情况下工作,为什么还在使用它? – 2012-01-14 14:18:49

+0

您在循环中递减四次'号码 - 当然,它会跳过数字。你也重新加载,这将重新开始整个过程​​ - 除非你将“总计”计数存储在某个持久性的地方,比如在一个cookie或其他东西中,每次你重新加载JS时都会重新开始。 – 2012-01-14 14:19:09

+0

你在'for'循环中递减了'number'四次。将它改为'for(i = 0; i <1; ++ i){'并且它可以工作。但在这种情况下循环的重点是什么? – 2012-01-14 14:21:00

回答

1

我把它从25倒数3次,然后重新加载页面。我对吗?

var number = 25; 
var i = 0; 

function countdown() { 

    $('#display').html("Redirecting in " + number + " second(s)."); 

    number--; 

    if (number == 0) { 

     number = 25; 
     i++; 

    } 

    if (i == 3) { 

     window.location.reload(); 

    } 

    setTimeout(countdown, 1000); 

} 

$(document).ready(function() { 
    countdown(); 
}); 
+0

如果计数并重新加载3次if这是可能的。如果没有,可以倒计时并重新加载iframe – bammab 2012-01-14 14:26:27

+0

有几种方法可以做到这一点。我想我会省下麻烦,并在PHP中设置一个'session'。然后让PHP输出一个JS的小代码来设置你的'i'值。会话本身显然会增加每个页面请求。虽然手动重新加载也会增加“我”的价值。 – Jeffrey 2012-01-14 14:30:43