从特定的动态值启动javascript秒表



在提问之前,我想通知您,我已经搜索了相关主题的问题,但我的问题与其他问题不同。事实上,我正在建立一个";Javascript秒表";,但脚本中有一些问题,我已经尝试并搜索过,但都找不到。秒表中存在问题:

  1. 当页面重新加载时,即使计时器被";stop_btn";。

  2. 当页面重新加载时,秒表自动重新启动,时间比较开始时间和当前时间;暂停时间被完全忽略!

  3. 秒表是否可以从特定的动态值启动;类似PHP变量的内容如下:$time=";01:06:39">

Java脚本:

var timer;
var startTime;
var isRunning = false;
var waitedTime = 0;
var stoppedTime = 0;
function start() {
if (isRunning) return;
isRunning = true;
startTime = parseInt(localStorage.getItem('startTime') || Date.now());
if (timer) {
waitedTime += (Date.now() - stoppedTime);
}
localStorage.setItem('startTime', startTime);
timer = setInterval(clockTick, 100);
}
function stop() {
isRunning = false;
clearInterval(timer);
stoppedTime = Date.now();
}
function reset() {
isRunning = false;
stoppedTime = 0;
waitedTime = 0;
clearInterval(timer);
timer = undefined;
localStorage.removeItem('startTime');
document.getElementById('display-area').innerHTML = "00:00:00.000";
}
function clockTick() {
var currentTime = Date.now(),
timeElapsed = new Date(currentTime - startTime - waitedTime),
hours = timeElapsed.getUTCHours(),
mins = timeElapsed.getUTCMinutes(),
secs = timeElapsed.getUTCSeconds(),
ms = timeElapsed.getUTCMilliseconds(),
display = document.getElementById("display-area");
display.innerHTML =
(hours > 9 ? hours : "0" + hours) + ":" +
(mins > 9 ? mins : "0" + mins) + ":" +
(secs > 9 ? secs : "0" + secs) + "." +
(ms > 99 ? ms : ms > 9 ? "0" + ms : "00" + ms);
};
var stopBtn = document.getElementById('stop_btn');
var startBtn = document.getElementById('start_btn');
var resetBtn = document.getElementById('reset_btn');
stopBtn.addEventListener('click', function() {
stop();
});
startBtn.addEventListener('click', function() {
start();
});
resetBtn.addEventListener('click', function() {
reset();
})
start();

有人能帮忙吗?

您可以添加这个新变量,然后在启动函数中使用它。如果定义了自定义时间,则本地存储或当前日期将被忽略。

var customStartTime = new Date() // enter your custom date in the Date() function.

然后在start((函数中修改starttime

startTime = customStartTime || parseInt(localStorage.getItem('startTime') || Date.now());

您是否考虑过使用window.onload处理程序,在页面重新加载后可以从中加载秒表值,我认为这应该涵盖您提到的前两个问题。此外,当您重新加载页面stopedTime时,变量将为0,请使用localStorage缓存stopedTime。

最新更新