開發線上考試系統,需在考生瀏覽器顯示倒數計時,時間到自動提交試卷。初學者易誤以為需在後端執行緒計時,實際上前端 JavaScript 即可精確處理 UI 倒數,後端僅需驗證提交時間合法性。
setInterval 每秒更新顯示。form.submit() 或 AJAX 提交答案。// 前端倒數邏輯
const deadline = Date.parse(examEndTime); // 後端傳入的 ISO 字串
const timer = setInterval(() => {
const now = Date.now();
const diff = deadline - now;
if (diff <= 0) {
clearInterval(timer);
document.getElementById('examForm').submit();
return;
}
const minutes = Math.floor((diff % (1000*60*60)) / (1000*60));
const seconds = Math.floor((diff % (1000*60)) / 1000);
document.getElementById('timer').textContent = `${minutes}:${seconds.toString().padStart(2,'0')}`;
}, 1000);
純前端計時可被竄改,務必在後端以伺服器時間為準驗證提交時間戳,確保公平性。