2012-01-19 38 views
0

私が達成しようとしているのは、スライドショーに10秒間続くスライドショーです。スライドショーの他のスライドはすべて4秒間続きます。以下の私のコードでは、current.id == 1の状態が私の最初のスライドです。 DOMがロードされると、最初にどのスライドがあるかがチェックされ、current.id == 1ならすべての遷移が10秒になります。それはまさに私が望むものではありません。どのように私は4秒ごとに間隔に他のすべてのスライドを取得することができますと私のメインスライドは、そのスライドに戻ってフリップするたびに持続10秒を維持する方法?スライドショー内のスライド1つを間隔間隔の間に長くすること

ご迷惑をおかけして申し訳ありません。助けてくれてありがとう!あなたは、様々な間隔をしたい場合、あなたは一度だけ、それを呼び出すと、あなたはそれを停止するまで、それは同じ間隔で繰り返し実行されるため

/* Setting auto-advance every 10 seconds for main slide, 4 seconds for all others */ 

var auto; 
if (current.id==1) { //this is the only slide I want lasting 10 seconds. 
    auto=setInterval(function(){ 

    next(); 

    },10*1000); //10 seconds for MAIN slide 
} else { // all other slides should interval every 4 seconds. 
    auto=setInterval(function(){ 
    next(); 

    },4*1000);//4 seconds each other slide. 
} 
+0

は、より多くのコードを表示自体を呼び出す必要が助けてください。私は、あなたがしようとしていることをするためにどのように変更する必要があるかを見るために、 'auto'があなたのスライドショーとどのようにやり取りするかを見たいと思います。 – Webnet

答えて

1

私はこのようにJSを書きます。それは私の意見では、それははるかに読みやすくなり、通常、私はこの

のようなコメントが含まれていませんが、本当にあなたのnext()機能が

$(document).ready(function() { 
    var Page = {}; 

    Page.slider = (function() { 
     return { 
      init: function() { 
       setTimeout(function() { 
        Page.slider.nextSlide(); 
       }, 10*1000); 
      }, 
      nextSlide: function() { 
       var duration = 4; 
       if (Page.slider.isShowingFirst()) { 
        duration = 10; 
       } 

       //code to handle transitioning slides 

       setTimeout(function() { 
        Page.slider.nextSlide(); 
       }, duration*1000); 
      }, 
      isShowingFirst: function() { 
       //return boolean on whether it's showing the first slide or not 
      } 
     } 
    })(); 

    Page.slider.init(); 
}); 
+0

これはうまくいった! Webnetに感謝します! – HoldTheLine

1

あなたはsetInterval()を使用することはできません。このように各スライドにsetTimeout()を使用できます。

if (current.id == 1) { //this is the only slide I want lasting 10 seconds. 
    setTimeout(next, 10*1000); //10 seconds for MAIN slide 
} else { // all other slides should interval every 4 seconds. 
    setTimeout(next, 4*1000);//4 seconds each other slide. 
} 

P.S. setTimeout()またはsetInterval()の匿名関数は、この例のようにすでに定義した関数を呼び出すだけであれば必要ないことに気付くこともできます。

+0

応答jfriend00ありがとう! – HoldTheLine

1

setIntervalの代わりにsetTimeoutを使用する必要があります。

var auto; 
if (current.id==1) { //this is the only slide I want lasting 10 seconds. 
    auto=setTimeout(function(){ 
     next(); 
    },10*1000); //10 seconds for MAIN slide 
} else { // all other slides should interval every 4 seconds. 
    auto=setTimeout(function(){ 
     next(); 
    },4*1000);//4 seconds each other slide. 
}