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

如何解决从特定的动态值启动JavaScript秒表

在提出问题之前,我想通知您,我已经搜索过相关主题的问题,但是我的问题与其他问题有所不同。实际上,我正在构建“ Java计时器”,但是我尝试并搜索了一些脚本中的问题以解决这些问题,但找不到这些问题。秒表中有问题:

  1. 即使计时器已被“ stop_btn”停止,秒表在页面重新加载时也会自动重新启动。

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

  3. 可以从特定的动态值启动秒表;像PHP变量一样: $ time =“ 01:06:39”; ?

JavaScript:

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 = customStartTime || parseInt(localStorage.getItem('startTime') || Date.now());
,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?