2016-01-28 45 views
2

我正在完成一個番茄鐘的工作,並且我的一切都工作得很好,直到計時器歸零,這是它應該切換到計時器但它保持爲零的時間。任何幫助是極大的讚賞。番茄鍾時鐘中斷計時器未啓動

http://codepen.io/sammyb123/pen/QyQaPr

function start(){ 
    $("#start").addClass("disabled"); 
    $("#myreset").addClass("disabled"); 
    var secs = Number("59"); 
    var minutes = document.getElementById('mytimer').innerHTML; 
    var num = minutes.split(""); 
    var min = document.getElementById("sessiontime").innerHTML; 
    var min = min-=1; 

    if(min > -1){ 
     startcounter = setInterval(function(){ 
     secs--; 

     if(secs > 9){ 
     document.getElementById("mytimer").innerHTML = min +":"+ secs; 
     } else if(secs >= 0 && secs < 10){ 
      secs = "0"+secs; 
      document.getElementById("mytimer").innerHTML = min +":"+ secs; 
      } else if(secs === 0){ 
       min--; 
       secs = 59; 
        }  }else if (min === 0 && secs === 00){ 
    var x = document.getElementById("arrownumid").innerHTML; 
    mybreak(x); 
    } 

    },1000); 

} 

function mybreak(bt){ 
    var b = bt; 
    var secs = Number("59"); 


    //document.getElementById("mytimer").innerHTML = mybt; 
    min--; 
    startBreak = setInterval(function(){ 
    secs--; 
    if(min > -1){ 
     if(secs > 9){ 
      document.getElementById("mytimer").innerHTML = b + ":" + secs; 
      }else if(secs > 0 && secs < 10){ 
       secs = "0" + secs; 
      document.getElementById("mytimer").innerHTML = b + ":" + secs; 
       }else if(secs === 0){ 
       document.getElementById("mytimer").innerHTML = "Break Over"; 
       } 

     } 
    }, 1000); 
} 

謝謝

回答

1

啓動功能 之外聲明變量(分鐘,秒和分)確定後,只是把最後否則如果setInterval函數裏面

所以逆這部分

},1000); 

    }else if (min === 0 && secs === 00){ 
    var x = document.getElementById("arrownumid").innerHTML; 
    mybreak(x); 
    } 

到如下:

}else if (min === 0 && secs === 00){ 
    var x = document.getElementById("arrownumid").innerHTML; 
    mybreak(x); 
},1000); 
} 
+0

我也這麼做,沒有運氣。我相信問題在於啓動功能。如果有幫助的話,這裏是codepen的鏈接,並且感謝你投入這個時間。 http://codepen.io/sammyb123/pen/QyQaPr – sammyb123

1

我覺得你的變量

var secs = Number("59");  
var minutes = document.getElementById('mytimer').innerHTML; 

應的功能之外聲明()開始..因爲他們可以在mybreak功能進行編輯!

+0

謝謝你,它確實乾淨了一點。就斷線計時器而言,我仍然陷入困境。我一直在這上面比我想要承認哈哈更久。 – sammyb123

+1

好的! .. 也有一些不正確的...看到你寫的這些行 * var min = document.getElementById(「sessiontime」)。innerHTML; * var min = min- = 1; 「min」聲明兩次?這將覆蓋你的變量... 另外,作爲秒和分鐘,變量「min」應該在開始函數()之外聲明(0)。 希望幫助 – taboubim

+1

你想說:min = min - 1 ....(而不是var min = min- = 1) – taboubim

0

仔細查看下面的代碼,您將瞭解您的代碼出了什麼問題。

function hms(t, out){ 
    var h = Math.floor(t/3600), m = Math.floor((t-(h*3600))/60), s = Math.round(t-(h*3600+m*60)); 
    if(h < 10)h = '0'+h; 
    if(m < 10)m = '0'+m; 
    if(s < 10)s = '0'+s; 
    var r = h+':'+m+':'+s; 
    if(out.innerHTML){ 
    out.innerHTML = r; 
    } 
    else if(out.value){ 
    out.value = r; 
    } 
    else{ 
    return r; 
    } 
} 
function pomodoro(outputElement, hours, minutes, seconds, doneMsg){ 
    var h = hours || 0; 
    var m = minutes || 0; 
    var s = seconds || 0; 
    var t = h*3600+m*60+s; 
    var d = doneMsg || 'Break Over'; 
    hms(t, outputElement); 
    var timer = setInterval(function(){ 
    hms(--t, outputElement); 
    if(t === 0){ 
     if(outputElement.innerHTML){ 
     outputElement.innerHTML = d; 
     } 
     else{ 
     outputElement.value = d; 
     } 
     clearInterval(timer); 
    } 
    }, 1000); 
} 
// normal use 
pomodoro(document.getElementById('mytimer'), 0, 0, 10); 
// or 
pomodoro(document.getElementById('mytimer'), 1); 
// or 
pomodoro(document.getElementById('mytimer'), 0, 25); 
// or 
pomodoro(document.getElementById('mytimer'), 1, 25, 32, 'Your Break is Over Sir'); 
// abnormal use 
pomodoro(document.getElementById('mytimer'), 1, 0, 99); 
+0

這很乾淨。我正在考慮從中學習,但現在我想知道我在亂碼中做了什麼錯誤,以避免在未來發生這種情況。 – sammyb123

+0

潦草的縮進。當發生中斷時,clearInterval()從不調用。 – PHPglue

+0

我看不出什麼縮進與功能(我是新的,所以不要期望太多),clearInterval在另一個函數中調用。我只發佈了我所知道的問題。如果你想看看整個圖片鏈接http://codepen.io/sammyb123/pen/QyQaPr – sammyb123