使用setInterval / clearInterval自动滚动

时间:2012-12-11 03:40:06

标签: javascript setinterval autoscroll clearinterval

我对JS编码相对较新,并且不能让这个小数字起作用。谁能告诉我我做错了什么?

我的JavaScript是:

    incrementScroll = function() {
        window.scrollBy(0, 3) ;
    }

    startScrollLoop = function() {
        scrollLoopId = setInterval( "incrementScroll", 5) ; 
    }

    stopScrollLoop = function() {
        clearInterval( scrollLoopId ) ;
    }

我的HTML是:

<button onclick="startScrollLoop()">AUTO SCROLL</button>
<button onclick="stopScrollLoop ()">STOP SCROLL</button>

再次,非常感谢您的帮助。所有这一切都是新手,需要在早上之前完成一个项目。 欢呼声。

1 个答案:

答案 0 :(得分:1)

setInterval()的第一个参数应该是函数引用,或者非理想情况下,应该是eval()'d的字符串,这将是一个带()的完整函数调用。所以删除引号:

// Pass the reference to incrementScroll, 
// not a quoted string containing its name.
scrollLoopId = setInterval(incrementScroll, 5); 

要清除滚动条,您需要使用scrollLoopId在更高的范围内定义var

// Define outside the function so it is available
// in scope of the stopScrollLoop() function when needed...
var scrollLoopId;
var startScrollLoop = function() {
    scrollLoopId = setInterval( incrementScroll, 5) ; 
}

Jsfiddle demo

(使用较慢的滚动速度让您有机会点击文本中间的停止按钮)

请注意,最好将var关键字与其中的每一个一起使用。即使它们最终会在window范围内结束(假设它们没有在另一个函数中定义)。

// Define with var
var incrementScroll = function() {
  window.scrollBy(0, 3);
}