我正在嘗試使用視頻創建倒數計時器。計時器需要從 MySQL 表加載數據,例如倒計時時間、休息時間以及計時器需要運行的組數、視頻(或在沒有視頻的情況下的圖像)。計時器開始倒計時,但還需要開始自動播放圖像滑塊的視頻。時間結束時開始倒計時。這個過程一直持續到達到組數。然后需要點擊進入下一個倒計時或在短暫的倒計時休息后加載隊列中的下一個。我可以使用 php 從 MySQL 加載數據并創建一個 while 循環來傳遞 jQuery/JavaScript 腳本中需要的變量。但我不確定這是否是正確的方法。這是我的方法,有一個與單擊開始/停止/重置按鈕相關的錯誤,這會導致倒計時期間的速度增加,以及一些關于倒計時的不良結果。對該錯誤的修復將不勝感激。
1 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
您的計時器問題來自以下代碼行:
myTimer = setInterval(timerTick, myTimerSpeed);
間隔并不是真正的變量,當您調用時,setInterval
您正在創建一個間隔并返回對該間隔的引用。
因此,如果上面的代碼被調用兩次,您將運行 2 個間隔,但只有對第二個的引用,這意味著它將永遠運行并且您不再擁有停止第一個所需的值。
你的朋友所做的是確保在開始一個新的變量之前沒有他的變量引用的運行間隔。
您可以通過將上面的行替換為以下內容來獲得相同的結果:
if(myTimer) clearInterval(myTimer); myTimer = setInterval(timerTick, myTimerSpeed);
并使用var myTimer = false;
. 那應該可以解決您的計時器問題
為了修復轉換,我基本上從計時器啟動/停止功能中刪除了它們的邏輯。所有轉換現在都由timerTick()
.
我添加了一個isBreak
變量來記住我們當前是否處于中斷或設置狀態,然后用于確定下一步是什么以及要獲取的計時器初始值。
我在代碼 ( resetAll()
& resetCurrent()
) 中包含了兩個重置功能,因為我不知道您是要重置所有內容還是只重置當前計時器。
它現在應該如下工作:設置 -> 中斷 (5x) 并在最后一次中斷PAUSE
時顯示,而不是顯示Next Exercise
(loadNext()
如果您希望用戶能夠手動啟動它,您可以添加一個單擊偵聽器調用)。
在loadNext()
您可以加載圖像,下一個練習,如果你取消注釋startTimer()
它會馬上開始。
結果: 小提琴
這是否如您所愿?
- 1 回答
- 0 關注
- 275 瀏覽
添加回答
舉報
0/150
提交
取消