由于才開始學習動態網站,這是我們學習資料上的代碼,但是重繪頁面后倒計時就重新開始了,老師也沒講這方面的知識,各位前輩能不能在里面幫忙加代碼,讓它不重置,我自己研究一下代碼了解一下。
(function($){
$.fn.timeout = function(options){
options = $.extend({
“maxTime”:60, //時限(秒數)
“onTimeOver”:function(){} //到時間時執行的函式
}, options);
var $thisObj = this;
var maxTime = options.maxTime; //倒計時(秒數)
var timer = setInterval(update,1000); //1秒鐘更新一次
update(); //自動更新第一次
//自動更新
function update(){
if(maxTime>=0){
var minutes = Math.floor(maxTime/60); //計算分鐘數
var seconds = Math.floor(maxTime%60); //計算秒數
$thisObj.text(fill(minutes)+":"+fill(seconds));
–maxTime;
}else{
clearInterval(timer);
options.onTimeOver(); //呼叫函式
}
}
//不足10位自動補0
function fill(s) {
return s < 10 ? ‘0’ + s: s;
}
};
})(jQuery);
uj5u.com熱心網友回復:
這應該是你封裝的一個方法,使用的時候需要傳遞一個引數options物件,里面maxTime代表開始值,默認是60 。js是一個腳本語言,每次重繪頁面的時候都會重新執行一遍。所以現在你重繪頁面的時候都會重新開始。想要保持狀態有兩種方式。
一、把當前狀態保存在本地,即每倒計時一次,就把當前值保存在localStorage中(maxTime改變一次,就保存一次),然后進入頁面時從
localStorage中獲取你保存的值,如果有保存的值,就把這個值當成引數傳遞到你這個方法中,如果沒有,就用你的默認值。
這個方法需要注意,localStorage不會自動洗掉記錄,需要你自己洗掉(比如maxTime<0時,你可以洗掉它);
二、就是每次進入頁面的時候從后端獲取這個初始值,然后把獲取到的這個初始值直接傳遞進去就行了。至于其它就留給后端做就行了
uj5u.com熱心網友回復:
可以通過new date ,先建一個,然后再你想要的時間在new一個,兩者相減,就是你要的倒計時,然后把相減得到的數字,放到頁面。uj5u.com熱心網友回復:
需要有個地方保存你的值,可以使用 window.localStorage,也可以使用cookie轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/109727.html
標籤:JavaScript
