clearInterval逻辑问题?

时间:2014-09-16 11:27:05

标签: javascript

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)
}

2 个答案:

答案 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来电中使用该变量。