2012-04-23 33 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

什麼不行,您的預期結果是什麼? – 2012-04-23 02:04:17

+0

「slide」函數未被調用? – 2012-04-23 02:04:36

+0

我相信JavaScript你必須傳遞一個字符串(即獲取evaled)作爲你的延遲方法(而不是對實際方法的引用)。所以你會做setInterval(「slide()」,2000); – 2012-04-23 02:05:21

回答

2

interval變量聲明在函數內部,又走了,當函數退出。下一次該函數被調用時,它沒有值,所以clearInterval正在通過undefined。聲明interval以外的功能,它應該工作。

+0

或者更好,將'interval'作爲數據屬性存儲。 – 2012-04-23 02:10:19

+1

沒有警惕,以確保「play」分支在清除之前的時間間隔之前沒有被擊中兩次,它仍然被打破。 – spender 2012-04-23 02:11:23

+0

謝謝!那整理它...我真的應該自己工作了!謝謝你的幫助! @spender排序出來,謝謝! – jamcoupe 2012-04-23 02:18:46

相關問題