我正在開發一個測驗應用程序在PHP和Javascript。測驗在用戶點擊提交按鈕時開始(我不控制測驗何時開始)。測驗應該在特定時間後停止(我決定)。 我不想完全依靠客戶端計算機來停止時間,因爲客戶端pc的時間可以改變。 測驗不應該在刷新頁面時重新啓動。在Javascript和php中實現計時器的最佳方法
我知道setInterval和基本的JavaScript。我迄今爲止開發的功能非常完美,但是測試會在頁面刷新時重新啓動。
function formatSecondsAsTime(secs) {
var hours = Math.floor(secs/3600);
var minutes = Math.floor(secs/60) - (hours * 60);
var seconds = secs - (hours * 3600) - (minutes * 60);
return hours + ':' + minutes + ':' + seconds;
}
function startTimer(mytime) {
mytime = mytime.split(":");
hrs = mytime[0];
parseInt(hrs, 10);
mins = mytime[1];
parseInt(mins, 10)
secs = mytime[2];
parseInt(secs, 10);
if (hrs > 0 || mins > 0 || secs > 0) {
timerVar = setInterval(function() {
if (secs > 0) //time is less than a minute
{
displayTime(hrs, mins, secs--);
}
else if (secs == 0 && mins > 0) {
displayTime(hrs, mins = mins - 1, secs = secs + 59);
}
else if (secs == 0 && mins == 0 && hrs > 0) {
displayTime(hrs--, mins = mins + 59, secs = secs + 59);
}
else if (secs == 0 && mins == 0 && hrs == 0) {
clearTimeout(timerVar);
displayTime(0, 0, 0);
}
}, 1000);
}
else {
displayTime(0, 0, 0);
}
}
function displayTime(hrs, mins, secs) {
if (secs > 0 || hrs > 0 || mins > 0) {
if ((secs.toString()).length < 2) secs = "0" + secs;
if ((mins.toString()).length < 2) mins = "0" + mins;
if ((hrs.toString()).length < 2) hrs = "0" + hrs;
document.getElementById("quiztime").innerHTML = "Time remaining: " + hrs + ":" + mins + ":" + secs;
}
else {
document.getElementById("quiztime").innerHTML = "Quiz has ended!";
alert("Quiz has ended. Click ok to continue.");
document.forms["answerForm"].submit();
}
}
請給我建議最好的辦法。
謝謝。
如果他們禁用JavaScript,怎麼辦? – j08691
是的,這也是一種可能性! –
,但不要擔心abt,如果用戶禁用了JavaScript,我會顯示一條錯誤消息。 –