2017-05-31 67 views
1

有人可以幫助此代碼,讓計時器不會重新設置嗎?限制計時器重置JavaScript

這裏是我的代碼:

var mins 
 
var secs; 
 

 
function cd() { 
 
    \t mins = 1 * m("02"); // change minutes here 
 
    \t secs = 0 + s(":01"); // change seconds here (always add an additional second to your total) 
 
    \t redo(); 
 
} 
 

 
function m(obj) { 
 
    \t for(var i = 0; i < obj.length; i++) { 
 
    \t \t if(obj.substring(i, i + 1) == ":") 
 
    \t \t break; 
 
    \t } 
 
    \t return(obj.substring(0, i)); 
 
} 
 

 
function s(obj) { 
 
    \t for(var i = 0; i < obj.length; i++) { 
 
    \t \t if(obj.substring(i, i + 1) == ":") 
 
    \t \t break; 
 
    \t } 
 
    \t return(obj.substring(i + 1, obj.length)); 
 
} 
 

 
function dis(mins,secs) { 
 
    \t var disp; 
 
    \t if(mins <= 9) { 
 
    \t \t disp = " 0"; 
 
    \t } else { 
 
    \t \t disp = " "; 
 
    \t } 
 
    \t disp += mins + ":"; 
 
    \t if(secs <= 9) { 
 
    \t \t disp += "0" + secs; 
 
    \t } else { 
 
    \t \t disp += secs; 
 
    \t } 
 
    \t return(disp); 
 
} 
 

 
function redo() { 
 
    \t secs--; 
 
    \t if(secs == -1) { 
 
    \t \t secs = 59; 
 
    \t \t mins--; 
 
    \t } 
 
    \t document.cd.disp.value = dis(mins,secs); // setup additional displays here. 
 
\t document.getElementById('waktu_val').innerHTML = dis(mins,secs); 
 
    \t if((mins == 0) && (secs == 0)) { 
 
    \t \t //window.alert("Time is up. Press OK to continue.");// change timeout message as required 
 
\t \t window.document.form_verbal.submit(); 
 
    \t \t //window.location = "http://localhost/tesasisten/Soal/exec_jkl.php" // redirects to specified page once timer ends and ok button is pressed 
 
    \t } else { 
 
    \t \t cd = setTimeout("redo()",1000); 
 
    \t } 
 
} 
 

 
function init() { 
 
    cd(); 
 
} 
 
window.onload = init;

我使用它的招聘考試,但因爲這個錯誤時,清新的頁面,讓計時器回至2分鐘,需要找到被修復。我認爲代碼本身並沒有保存給出的問題的多種選擇。

就是這樣,任何幫助將不勝感激謝謝。

回答

1
var mins 
    var secs; 
var minutes=sessionStorage.mins || "02"; 
var seconds=sessionStorage.secs || ":01"; 
    function cd() { 
     mins = 1 * m(minutes); // change minutes here 
     secs = 0 + s(seconds); // change seconds here (always add an additional second to your total) 
     redo(); 
    } 

    function m(obj) { 
     for(var i = 0; i < obj.length; i++) { 
      if(obj.substring(i, i + 1) == ":") 
      break; 
     } 
     return(obj.substring(0, i)); 
    } 

    function s(obj) { 
     for(var i = 0; i < obj.length; i++) { 
      if(obj.substring(i, i + 1) == ":") 
      break; 
     } 
     return(obj.substring(i + 1, obj.length)); 
    } 

    function dis(mins,secs) { 
     var disp; 
     if(mins <= 9) { 
      disp = " 0"; 
     } else { 
      disp = " "; 
     } 
     disp += mins + ":"; 
     if(secs <= 9) { 
      disp += "0" + secs; 
     } else { 
      disp += secs; 
     } 
     return(disp); 
    } 

    function redo() { 
     secs--; 
     if(secs == -1) { 
      secs = 59; 
      mins--; 
     } 
     document.cd.disp.value = dis(mins,secs); // setup additional displays here. 
     document.getElementById('waktu_val').innerHTML = dis(mins,secs); 
sessionStorage.mins=mins; 
sessionStorage.secs=secs; 
     if((mins == 0) && (secs == 0)) { 
      //window.alert("Time is up. Press OK to continue.");// change timeout message as required 
      window.document.form_verbal.submit(); 
      //window.location = "http://localhost/tesasisten/Soal/exec_jkl.php" // redirects to specified page once timer ends and ok button is pressed 
     } else { 
      cd = setTimeout("redo()",1000); 
     } 
    } 

    function init() { 
     cd(); 
    } 
    window.onload = init; 

<!-- end snippet --> 
0

如果你想保持當前的計時器刷新,你可以將它添加到sessionStorage或localStorage。

只要確保在測試完成時刪除記錄,特別是從localStorage中刪除記錄。 sessionStorage會保留它,直到會話過期,所以如果不刪除它,yoursef就沒有問題,因爲之後沒有任何複雜情況。