1

x秒後に上下にスクロールするページを作成する必要があります。遅延後に2番目のsetIntervalを開始する方法を知る必要があります。または、他の解決策があれば、私は何でも構いません!

コードは次のとおりです。

setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    scrollUp();
},8000);

function scrollDown() {

    $('html, body').animate({
        scrollTop: $("#page2").offset().top
    }, 2000);
}

function scrollUp() {

    $('html, body').animate({
    scrollTop: $("#page1").offset().top
    }, 2000);
}
4

5 に答える 5

2

次のように、たった1つのタイマーでこれを行うためのよりクリーンでより正確な方法:

setInterval(scrollDown, 8000);

function scrollDown() {
    $('html, body').animate({
        scrollTop: $("#page2").offset().top
    }, 2000);

    setTimeout(scrollUp, 4000);
}

function scrollUp() {
    $('html, body').animate({
        scrollTop: $("#page1").offset().top
    }, 2000);
}
于 2012-08-03T10:46:15.850 に答える
1

あなたはそれ自身を設定するを使うことができますsetTimeoutか?

function setNext(up){
  setTimeout(function(){
     if(up) scrollUp(); 
     else scrollDown();
     setNext(!up);
  }, 8000);
}

scrollDown() //first time
setNext(true);

免責事項:私はそれをテストしていません。(まだ)

これが実際のデモです。

于 2012-08-03T11:57:01.360 に答える
0

最も簡単な解決策は、これを試してください:

setInterval(function() {
    scrollDown();
},8000);

setTimeOut(function(){
    setInterval(function() {
        scrollUp();
    },8000);
},1000);

setTimeOut関数は1回だけ呼び出すため

于 2012-08-03T10:32:01.017 に答える
0

他の人はすでに答えているので、私はこれだけを追加します:

setInterval(function() {
    scrollDown();
}, 8000);

setInterval(function() {
    scrollUp();
}, 8000);

これと同じです:

setInterval(scrollDown, 8000);

setInterval(scrollUp, 8000);

その匿名関数で行うのが別の名前付き関数を呼び出すことだけである場合、コールバックに匿名関数は必要ありません。名前付き関数を渡すだけです。

于 2012-08-03T10:33:33.657 に答える
-1
setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    scrollUp();
},8000 + 2000);

その価値については、上記はまったく同じ効果があります。ただし、要件のように表現されたコードの場合は、次のようにすることができます。

setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    setInterval(function() {
        scrollUp();
    },8000);
2000);
于 2012-08-03T10:30:05.293 に答える