从特定的动态值启动javascript秒表
在提问之前,我想告诉你,我已经搜索了相关主题的问题,但我的问题与其他问题不同。事实上,我正在构建一个“Javascript秒表”,但脚本中有一些问题我已经尝试并搜索过解决,但没有找到。秒表中存在以下问题:从特定的动态值启动javascript秒表,javascript,dynamic,stopwatch,Javascript,Dynamic,Stopwatch,在提问之前,我想告诉你,我已经搜索了相关主题的问题,但我的问题与其他问题不同。事实上,我正在构建一个“Javascript秒表”,但脚本中有一些问题我已经尝试并搜索过解决,但没有找到。秒表中存在以下问题: 重新加载页面时,秒表会自动重新启动,即使计时器被“stop_btn”停止 重新加载页面时,秒表自动重新启动,时间比较开始时间和当前时间;暂停时间完全被忽略 秒表可以从特定的动态值启动;类似PHP变量的内容如下: $time=“01:06:39” Javascript: var timer
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();
有人能帮忙吗?您可以添加这个新变量,然后在start函数中使用它。如果定义了自定义时间,则本地存储或当前日期将被忽略
var customStartTime = new Date() // enter your custom date in the Date() function.
然后在start()函数中修改starttime
您是否考虑过使用window.onload处理程序,在页面重新加载后可以从中加载秒表值,我认为这应该涵盖您提到的前两个问题。
另外,当重新加载page stoppedTime时,变量将为0,请使用localStorage缓存stoppedTime。是的,这是有道理的!非常感谢。
startTime = customStartTime || parseInt(localStorage.getItem('startTime') || Date.now());