我需要清除其他功能的间隔
window.onload = function(){
var interval = null;
interval = setInterval(function(){
myFunction();
}, 1000);
function stop(){
clearInterval(interval);
}
}
没有通过区间变量
stop();
但是我无法使其发挥作用:当我呼叫stop();
时间隔继续......
我该怎么办?
答案 0 :(得分:2)
有一个意外的window.stop功能,它预先存在于您的身上 这是全球变量/功能是邪恶的另一个证据。
根据加载脚本的时间,可能会调用此函数而不是您的函数。
尝试将您的函数放在一个对象中以保护名称空间:
它适用于StackOverflow小提琴:
var i = 0;
function myFunction() {
i++;
console.log(i);
}
var interval = null;
interval = setInterval(function() {
myFunction();
}, 1000);
var myObject = {
stop: function() {
console.log("stopping");
clearInterval(interval);
}
};
<button onclick="myObject.stop();">stop</button>
在错误的jsFiddle中,你会得到iframe中的东西,意思是窗口元素不一样。这就是为什么不调用你的函数的原因。这会给你带来那种错误:
您可以将脚本放在html中以使其正常工作:
答案 1 :(得分:1)
您可以在函数外部的JavaScript开头添加类似var interval = null;
的内容。
关于变量范围的全部内容。函数内部定义的变量仅在该函数中可用。在函数或对象之外定义的变量将全局可用于所有函数。
答案 2 :(得分:1)
我发现这个解决方案也有效:
stop = function(){
clearInterval(interval);
}
答案 3 :(得分:0)
您检查为答案的答案的假设是错误的。
无论是否存在以编程方式支持load stop命令的浏览器,您的停止功能都无法正常工作。
这个[stop]命令是一个窗口属性,可以删除和/或被简单的变量声明或脚本上任何地方的同名函数覆盖。
你无法调用停止功能(来自外部)的原因是因为它是关闭。
问候。
P.S .: 把它放在全球范围内将使其有效,visit you fiddle
var i=0;
function myFunction(){
i++;
$('i').html(i);
}
interval = null;
interval = setInterval(function(){
myFunction();
}, 100);
stop = function(){
clearInterval(interval);
}