3

我对 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>

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

4

1 回答 1

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 演示

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

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

// Define with var
var incrementScroll = function() {
  window.scrollBy(0, 3);
}
于 2012-12-11T03:45:13.087 回答