我正在使用下面的腳本來產生一個進度條來跟蹤定時器的進度。定時器運行一段時間,然後完成自身並刪除(這是針對基於瀏覽器的遊戲,在此建立建築物並最終在建造完成後持續一段時間)。Javascript代碼與php變量建議需要
請參見下面的代碼:
$remaining=$item['start']+$item['duration']*60-time();
if ($remaining < 1) {
$remaining='0.1';
}
echo "<script type='text/javascript'>
var something = $remaining;
//<![CDATA[
$(function(){
$(document).ready(function(){
jQuery.fn.anim_progressbar = function (aOptions) {
// def values
var iCms = 1000;
var iMms = 60 * iCms;
var iHms = 3600 * iCms;
var iDms = 24 * 3600 * iCms;
// def options
var aDefOpts = {
start: new Date(), // now
finish: new Date().setTime(new Date().getTime() + something * iCms), // now + 60 sec
interval: 100
}
var aOpts = jQuery.extend(aDefOpts, aOptions);
var vPb = this;
// each progress bar
return this.each(
function() {
var iDuration = aOpts.finish - aOpts.start;
// calling original progressbar
$(vPb).children('.pbar').progressbar();
// looping process
var vInterval = setInterval(
function(){
var iLeftMs = aOpts.finish - new Date(); // left time in MS
var iElapsedMs = new Date() - aOpts.start, // elapsed time in MS
iDays = parseInt(iLeftMs/iDms), // elapsed days
iHours = parseInt((iLeftMs - (iDays * iDms))/iHms), // elapsed hours
iMin = parseInt((iLeftMs - (iDays * iDms) - (iHours * iHms))/iMms), // elapsed minutes
iSec = parseInt((iLeftMs - (iDays * iDms) - (iMin * iMms) - (iHours * iHms)) /iCms), // elapsed seconds
iPerc = (iElapsedMs > 0) ? iElapsedMs/iDuration * 100 : 0; // percentages
// display current positions and progress
$(vPb).children('.percent').html('<b>'+iPerc.toFixed(1)+'%</b>');
$(vPb).children('.elapsed').html(iDays+' days '+iHours+'h:'+iMin+'m:'+iSec+'s</b>');
$(vPb).children('.pbar').children('.ui-progressbar-value').css('width', iPerc+'%');
// in case of Finish
if (iPerc >= 100) {
clearInterval(vInterval);
$(vPb).children('.pbar').children('.ui-progressbar-value').css('width', 0+'%');
$(vPb).children('.percent').html('<b>0%</b>');
$(vPb).children('.elapsed').html('Building queue is empty. <div style= font-size:x-small; color:#000;>(<a href=# onclick=window.location.reload(true);>Reload?</a>)</div>');
}
} ,aOpts.interval
);
}
);
}
// default mode
$('#progress1').anim_progressbar();
// from second #5 till 15
var iNow = new Date().setTime(new Date().getTime() + 5 * 1000); // now plus 5 secs
var iEnd = new Date().setTime(new Date().getTime() + 15 * 1000); // now plus 15 secs
});
});//]]>";
其餘變量$是其中時間來完成存儲,目前這是進度條中有哪些了,問題是當你刷新頁面的進度條再次從0%開始(即使速度更快,因爲更多計時器已經耗盡)。我希望它能記住它之前的%點,並從這一點繼續加載。
EXTRA INFO
$項[ '開始']被存儲在MySQL,如:2014年10月17日12點45分25秒和 $ 項[ '持續時間']所示:1 1分鐘並10 10分鐘
編輯:解決方案仍未找到。
我改成了這樣:開始:新的Date(開始日期),並增加了$ STARTDATE = $項[ '開始'];作爲一個變量進一步上漲,但這導致酒吧100%和充分時,它開始..如果這就是你的意思。 – Ben 2014-10-17 14:02:44
所以...在PHP頂部$ startdate = $ item ['start']; then - start:new Date($ startdate),// now – 2014-10-17 14:04:22
掛上...我會更新我的回答 – 2014-10-17 14:16:03