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的主要内容,如果未能解决你的问题,请参考以下文章