javascript 用 clearinterval 停止 setinterval

Posted

技术标签:

【中文标题】javascript 用 clearinterval 停止 setinterval【英文标题】:javascript stopping setinterval with clearinterval 【发布时间】:2015-08-07 11:59:48 【问题描述】:

如何停止 setinterval?这是我的功能,但是当我单击停止时,它显示 ReferenceError: goint is not defined

<script>
function toggle_interval(x)

    if(x==1)
    
        var i=0;
        var goint = setInterval(function() 
            i++;
        , 2000);
    else
        clearInterval(goint);
    

</script>

<a href="#" onclick="javascript:toggle_interval(1);">start</a>
<a href="#" onclick="javascript:toggle_interval(0);">stop</a>

【问题讨论】:

@ManishMishra 不,JS 中没有块作用域。 哇!!让我检查一下,(尽管世界上一半的语言都是这样) 不是在 es5 中,es6 确实有。但是这段 JavaScript 代码似乎有很多问题。 goint 作用于函数。您多次调用该函数。当x 为0 时,goint 没有值。您需要让goint 成为一个全局(存在相关问题)或其他一些机制。 @ManishMishra 不仅如此,还查了一下JS变量提升。当变量是函数时,变量提升。欢迎来到 JS。 【参考方案1】:

变量 goint 在你的函数的本地范围内。

将其范围更改为全局,以便下次调用时可用。

 var goint;
function toggle_interval(x)

    if(x==1)
    
        var i=0;
        goint = setInterval(function() 
            i++;
            )
        , 2000);
    else
        clearInterval(goint);
    

【讨论】:

【参考方案2】:

在函数 toggle_interval 之外的全局范围内声明 goint。

var goint;

function toggle_interval(x)

if(x==1)
    
    var i=0;
    goint    = setInterval(function() 
        i++;
        )
    , 2000);
else
    clearInterval(goint);


【讨论】:

以上是关于javascript 用 clearinterval 停止 setinterval的主要内容,如果未能解决你的问题,请参考以下文章

js 动画3 完美框架

js动画最佳实现——requestAnimationFrame

js 多物体运动框架

更新的状态值不会在反应中的函数内部更新

javascript 用javascript设置css变量

javascript 用javascript记录一些东西