2013-07-05 23 views
2

我在我的項目中使用計時器,我有兩個問題。當開始按鈕是按下時間應該開始&結束按鈕按下時間應該結束。
但是1)結束按鈕被點擊時
時間不停止。
2)當時間減少&達到1個minute..time停止..它應該在幾秒鐘內reduse也在javascript中的計時器控制

var tim; 
var min = 10; 
var sec = 10; 
var f = new Date(); 

function f1() { 
    f2(); 
    document.getElementById("starttime").innerHTML = "Your started your Exam at " + f.getHours() + ":" + f.getMinutes(); 


} 

function f2() { 
    if (parseInt(sec) > 0) { 
     sec = parseInt(sec) - 1; 
     document.getElementById("showtime").innerHTML = "Your Left Time is :" + min + " Minutes ," + sec + " Seconds"; 
     tim = setTimeout("f2()", 1000); 
    } else { 
     if (parseInt(sec) == 0) { 
      min = parseInt(min) - 1; 
      if (parseInt(min) == 0) { 
       clearTimeout(tim); 
       location.href = ".././Home/Login"; 
      } else { 
       sec = 60; 
       document.getElementById("showtime").innerHTML = "Your Left Time is :" + min + " Minutes ," + sec + " Seconds"; 
       tim = setTimeout("f2()", 1000); 


      } 
     } 

    } 
} 
+2

你可以發佈你的事件綁定代碼嗎? –

回答

1

我的建議是這樣的:

Fiddle

var tim; 
var sec; 
var f = new Date(); 

function f1() { 
    sec = 10 * 60; 
    f2(); 
    document.getElementById("starttime").innerHTML = "Your started your Exam at " + f.getHours() + ":" + f.getMinutes(); 
} 

function f2() { 
    if (sec > 0) { 
     sec--; 
     tim = setTimeout(f2, 1000); 
    } else { 
     document.getElementById("starttime").innerHTML = "times up!!!!"; 
    } 

    var min = Math.floor(sec/60); 
    var secDisplay = sec % 60; 

    document.getElementById("showtime").innerHTML = "Your Left Time is : " + min + " Minutes," + secDisplay + " Seconds"; 
} 

function end() { 
    clearTimeout(tim); 
    sec = 0; 
    f2(); 
} 

變化是:

  • 刪除了min變量,只使用總秒而不是兩個變量。出於顯示目的,我們可以根據總秒數輕鬆計算分鐘數。使用秒變量可以更容易地檢查剩餘時間。正如你所看到的,代碼被簡化了很多。

  • 更改了setTimeout以將該函數作爲參數,而不是字符串。

  • 添加了end()函數,當點擊結束按鈕時被調用。

  • 將秒數移至f1()之內,以便可以在不重新加載頁面的情況下反覆啓動和結束。

  • 刪除了不必要的parseInt()來電。 sec變量已經是數字類型,所以不需要轉換它。

當秒數減少到0時,計時器將停止。如果您希望在剩餘時間達到一分鐘後停止,請將f2()中的條件更改爲if (sec > 60) {

+0

謝謝你...在開始按鈕onclick =「f1()」時間計數開始....然後在結束按鈕我必須停止計時器.... plz幫助 –

+0

更新答案包括結束時的能力結束時按鈕。 – MrCode

+0

謝謝你,先生...它工作得很好....當它超過它的時間導航到另一個頁面...在瀏覽器後退按鈕(回到一個頁面)被按下它導航回它應該被停止... PLZ幫助我 –

1

對於第一個關於結束按鈕的問題,我看不到任何結束按鈕功能。但你可以有一個清除超時的停止功能。

function f3() { 
    clearTimeout(tim); 
    //update any text you wish here or move to the next page.. 
} 

對於第二個問題,爲什麼它在1分鐘結束。在檢查它是否爲零之前,您正在減小分鐘值。所以,當你來到f2時,sec是0,min是1,然後將min減小到0。然後檢查它是否爲零並結束執行。 爲了解決這個問題,你的「min = parseInt(min) - 1;」在別人之後,它也應該算最後一刻。

PS。你不需要parseint,因爲你使用的數字已準備就緒

+0

謝謝你,先生...當它超過它時導航到另一頁...在瀏覽器後退按鈕(回到一頁)被按下它導航回它應該停止... PLZ幫助我 –