Jquery 每秒更新计数导致大量内存问题

Jquery 每秒更新计数导致大量内存问题,jquery,count,counter,intervals,Jquery,Count,Counter,Intervals,就在我的本地计算机上,尝试运行以下脚本会导致我的计算机崩溃。。。我做错了什么 (function($) { var count = '6824756980'; while (count > 0) { setInterval(function() { $('#showcount').html(Math.floor(count-1));

就在我的本地计算机上,尝试运行以下脚本会导致我的计算机崩溃。。。我做错了什么

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

我所需要做的就是从变量“count”中减去一,然后每秒更新/显示它的值。

您正在做的是设置6824756980计时器->坏

照办

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

你正在做的是设置6824756980定时器->坏

照办

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

除了count是一个字符串而不是一个数字之外,您还使用while(count>0){setInterval…}生成了大量的Interval函数


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

除了count是一个字符串而不是一个数字之外,您还使用while(count>0){setInterval…}生成了大量的Interval函数


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

您的
设置Interval
位置错误

它目前在while循环的主体中,该循环将以您的计算机可以达到的速度循环,并且每次启动函数以增加计数器。难怪它在消耗资源


您只需调用setInterval一次。

您的
setInterval
位于错误的位置

它目前在while循环的主体中,该循环将以您的计算机可以达到的速度循环,并且每次启动函数以增加计数器。难怪它在消耗资源


您只需调用setInterval一次。

啊,就这样。。。谢谢那么,为什么这项工作效率更高呢?或者您可以使用setTimeout。而且不需要Math.floor。@Josh,setInterval告诉JavaScript每隔一段时间(在您的情况下是一秒钟)重复调用该函数。因此,如果您的代码没有崩溃,它最终将使函数每秒运行6824756980次!现在,如果我想通过每秒减去“1”来更新“count”呢?有没有办法做到这一点而不是数一数--@马修:我不知道设置超时在这里有什么帮助@Josh:正如我所写的,setInterval正在设置“异步”计时器,这意味着您正在设置大量的计时器,所有这些计时器都执行该代码。。访问一个DOM元素很可能会崩溃。啊,就是这样。。。谢谢那么,为什么这项工作效率更高呢?或者您可以使用setTimeout。而且不需要Math.floor。@Josh,setInterval告诉JavaScript每隔一段时间(在您的情况下是一秒钟)重复调用该函数。因此,如果您的代码没有崩溃,它最终将使函数每秒运行6824756980次!现在,如果我想通过每秒减去“1”来更新“count”呢?有没有办法做到这一点而不是数一数--@马修:我不知道设置超时在这里有什么帮助@Josh:正如我所写的,setInterval正在设置“异步”计时器,这意味着您正在设置大量的计时器,所有这些计时器都执行该代码。。访问最有可能崩溃的DOM元素。