2012-04-23 11 views
0

私は写真のスライダーを簡単な遊びを持っており、一時停止しようとしていますが、のsetIntervalは文句を言わない、誰もがたsetIntervalはただ文句を言わないてclearInterval

私は一時停止をクリックしたときに、それを停止したい私が間違っているのかを見ることができます私のために働くと停止します。

$('.control').click(function() { 
    var data = $(this).attr('data-id'); 
    var interval; 

    switch (data){ 
     case 'play': 
      console.log('play'); 
      interval = setInterval(slide, 2000); 
      break; 
     case 'pause': 
      console.log('pause'); 
      clearInterval(interval) 
      break; 
     default : console.log('nothing'); 
    } 
+0

何がうまくいかず、期待される結果は何ですか? –

+0

'slide'関数は呼び出されていませんか? –

+0

私はあなたの遅延メソッド(実際のメソッドへの参照ではなく)として文字列を渡さなければならないと考えています。したがって、setInterval( "slide()"、2000)を実行します。 –

答えて

2

あなたinterval変数は、関数内で宣言され、関数が終了したときに消えています。次に関数が呼び出されるときには値がないので、clearIntervalはundefinedに渡されます。関数の外でintervalを宣言し、それが動作するはずです。

+0

それ以上の場合は、データ属性として 'interval'を格納してください。 –

+1

"再生"ブランチが前の間隔をクリアする前に2回ヒットしないようにするためのガードがないので、まだ破損しています。 – spender

+0

ありがとう!それはソートされた...私は本当に自分自身をそれを働かせていたはずです!ご協力いただきありがとうございます! @spenderはそれをあまりにもソートしました! – jamcoupe

関連する問題