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()される文字列である必要があります。これは、。を使用した完全な関数呼び出しになり()ます。したがって、引用符を削除します。

// 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 に答える