window.onload = function() {
var myVar = setInterval(fn, 2000)
}
function fn() {
alert("test")
clearInterval(myVar)
}
上述目的是让它只执行一次线路警报(“测试”)。 上述结果是无限循环的警报。 我在哪里逻辑上错了?
增加:
此外,以下结果也导致无限循环的警报。是否myTar可用于highlightTotals()函数?这里的问题是不是吗?
var myVar;
window.onload = function() {
var rbs = document.getElementsByName("rbToggle")
for (i=0; i < rbs.length; i++) {
rbs[i].addEventListener("click", highlightTotals)
}
}
function highlightTotals() {
myVar = setInterval(fn, 1000)
}
function fn() {
alert("test")
clearInterval(myVar)
}
答案 0 :(得分:2)
myVar
超出了clearInterval
来电的范围。
替换:
window.onload = function() {
var myVar = setInterval(fn, 2000)
} // myVar is only accessible within this function's scope.
使用:
var myVar;
window.onload = function() {
myVar = setInterval(fn, 2000);
}
答案 1 :(得分:0)
Javascript中的变量是函数作用域。它们存在于功能层面。
在这种情况下,变量myVar
存在于您传递给window.onload处理程序的匿名函数的范围内,而不是在它之外。
将myVar
变量移出该功能之外,您可以在clearInterval
来电中使用该变量。