clearInterval不工作,Interval未定义
clearInterval not working, Interval Undefined
好吧,所以我在这里和网上其他地方读到了20个关于类似事情的其他问题,但最终都是他们不喜欢,正确设置了一个变量,并假设clearInterval是基于函数ID或类似的东西。以下是我得到的(还有更多,但相当长,据我所知,这是重要的一点(:
var fan1 = function () {
var f1 = setInterval("flare1baserotate()",10);
setTimeout("clearInterval(f1)",2000);
};
基本上,"fan1(("函数被正确地调用,setInterval正确地运行,就像"flare1baserotate(("功能正确地运行并每10毫秒旋转一次我的对象一样,但问题在于"clearInterval(f1("在20秒后没有像我认为的那样正确地运行。我该怎么做才能在20秒后将其清除?
如果将字符串与setTimeout
或setInterval
一起使用,则其中的代码将在全局window
范围内运行,而不是在调用它的范围内运行。在函数fan1
内部声明的f1
因此从在全局window
作用域中执行的行clearInterval(f1)
不可用。一个简单的解决方案是使f1
全局化。
var f1;
var flare1baserotate = function(){console.log("hi");};
var fan1 = function () {
f1 = setInterval("flare1baserotate()",10);
setTimeout("clearInterval(f1)",2000);
};
推荐的做法是使用闭包,而不是将代码行作为字符串传递。
没有全球化的艰难道路可能看起来像
var flare1baserotate = function() {
console.log("hi");
};
var fan1 = function() {
var f1 = setInterval("flare1baserotate()", 10);
setTimeout((function(f1) {
return function() {
clearInterval(f1);
}
})(f1), 2000);
};
使用以下内容:
var f1 = setInterval(function() {flare1baserotate();},10);
setTimeout(function() {clearInterval(f1); },2000);
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 当使用 Jasmine 对我的 angularJS 应用程序进行单元测试时,$interval是未定义的
- clearInterval不工作,Interval未定义