2010-06-02 83 views
0

只是在我的本地机器上,尝试运行以下脚本会导致我的电脑崩溃......我在做什么错了?每秒更新一次导致大量内存问题

  (function($) { 
      var count = '6824756980'; 
      while (count > 0) { 
       setInterval(function() { 
        $('#showcount').html(Math.floor(count-1)); 
        count--; 
       }, 1000); 
      } 
     })(jQuery); 

我只需要从var“count”中减去一个值,并每秒更新/显示它的值。

回答

4

你正在做的是建立6824756980个定时器 - > BAD

只是做

$(document).ready(function(){ 
    var count = 6824756980; 
    var timerID = setInterval(function() { 
      if(count > 0){ 
       $('#showcount').html(Math.floor(count-=1)); 
       count--; 
      } 
      else clearInterval(timerID); 
    }, 1000); 
}); 
+0

啊,那是...谢谢。 那么,为什么这样做更有效? – Josh 2010-06-02 12:04:09

+3

或者你可以使用setTimeout。 Math.floor不是必需的。 – 2010-06-02 12:05:12

+0

@Josh,setInterval告诉JavaScript以间隔(在你的情况下为1秒)重复调用该函数。所以如果你的代码没有崩溃,它最终会每秒钟运行6824756980次! – 2010-06-02 12:07:22

0

除了数是一个字符串,而不是一个数字,你产卵一个非常大的数量的while(count> 0){setInterval ...}的区间函数

如果我明白了,您应该检查Interval函数中的count> 0,因为它每秒运行一次。

0

您的setInterval是错误的地方。

它目前在while循环的主体中,循环速度可以像计算机一样快,每次触发函数来递增计数器。难怪它是吃资源。

你只需要调用setInterval一次。