Javascript 尝试创建秒表时失败了
我正在尝试自增强JavaScript,在用秒表做一些文本时,我陷入了这个问题。它在工作,但总是在95:34:47开始,而不是00:00:00 这就是我到目前为止所尝试的Javascript 尝试创建秒表时失败了,javascript,stopwatch,Javascript,Stopwatch,我正在尝试自增强JavaScript,在用秒表做一些文本时,我陷入了这个问题。它在工作,但总是在95:34:47开始,而不是00:00:00 这就是我到目前为止所尝试的 <script> /*Timer Stuff*/ function pad(num, size) { var s = "0000" + num; return s.substr(s.length - size);
<script>
/*Timer Stuff*/
function pad(num, size) {
var s = "0000" + num;
return s.substr(s.length - size);
}
function formatTime(time) {
var h = m = s = ms = 0;
var newTime = '';
h = Math.floor( time / (60 * 60 * 1000) );
time = time % (60 * 60 * 1000);
m = Math.floor( time / (60 * 1000) );
time = time % (60 * 1000);
s = Math.floor( time / 1000 );
ms = time % 1000;
newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
return newTime;
}
function update() {
var d = new Date();
var n = d.getTime();
document.getElementById("time").innerHTML = formatTime(n);
}
function start() {
MyVar = setInterval(update, 1);
}
</script>
</head>
<body>
<div>Time: <span id="time"></span></div>
<input type="button" value="start" onclick="start();">
</body>
我知道我需要减去一个特定的时间来精确匹配计时器,但是我不知道怎么做。必须引入一个开始时间变量。 在每一个更新步骤中,你都必须从开始到现在有所不同 对于您的代码:
<script>
/*Timer Stuff*/
timestart = new Date();
timestart_time = timestart.getTime();
function pad(num, size) {
var s = "0000" + num;
return s.substr(s.length - size);
}
function formatTime(time) {
time = time -timestart_time;
var h = m = s = ms = 0;
var newTime = '';
h = Math.floor( time / (60 * 60 * 1000) );
time = time % (60 * 60 * 1000);
m = Math.floor( time / (60 * 1000) );
time = time % (60 * 1000);
s = Math.floor( time / 1000 );
ms = time % 1000;
newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
return newTime;
}
function update() {
var d = new Date();
var n = d.getTime();
document.getElementById("time").innerHTML = formatTime(n);
}
function start() {
MyVar = setInterval(update, 1);
}
</script>
</head>
<body>
<div>Time: <span id="time"></span></div>
<input type="button" value="start" onclick="start();">
</body>
这对我很有用:您必须引入一个开始时间变量。 在每一个更新步骤中,你都必须从开始到现在有所不同 对于您的代码:
<script>
/*Timer Stuff*/
timestart = new Date();
timestart_time = timestart.getTime();
function pad(num, size) {
var s = "0000" + num;
return s.substr(s.length - size);
}
function formatTime(time) {
time = time -timestart_time;
var h = m = s = ms = 0;
var newTime = '';
h = Math.floor( time / (60 * 60 * 1000) );
time = time % (60 * 60 * 1000);
m = Math.floor( time / (60 * 1000) );
time = time % (60 * 1000);
s = Math.floor( time / 1000 );
ms = time % 1000;
newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
return newTime;
}
function update() {
var d = new Date();
var n = d.getTime();
document.getElementById("time").innerHTML = formatTime(n);
}
function start() {
MyVar = setInterval(update, 1);
}
</script>
</head>
<body>
<div>Time: <span id="time"></span></div>
<input type="button" value="start" onclick="start();">
</body>
这对我很有用:您需要存储一个带有开始时间的变量,然后从中减去。小时数的95实际上要高得多,只是被裁剪了一下,这是从Unix时代开始计算的 我会这样做:
function update() {
var d = new Date();
var n = d - startTime;
document.getElementById("time").innerHTML = formatTime(n);
}
function start() {
startTime = new Date();
MyVar = setInterval(update, 1);
}
请注意,在进行减法运算时,您甚至不需要使用d.getTime—您只需减去日期对象本身。您需要存储一个带有开始时间的变量,然后从中减去。小时数的95实际上要高得多,只是被裁剪了一下,这是从Unix时代开始计算的 我会这样做:
function update() {
var d = new Date();
var n = d - startTime;
document.getElementById("time").innerHTML = formatTime(n);
}
function start() {
startTime = new Date();
MyVar = setInterval(update, 1);
}
请注意,在进行减法运算时,您甚至不需要使用d.getTime,只需减去日期对象本身即可。看看这里:谢谢您的回答。虽然对于像我这样的新手来说,这有点太让人困惑了,我正在寻找一些不需要删除整个代码的东西。尽管如此,我还是会努力理解它是如何工作的,谢谢。看看这里:谢谢你的回答。虽然对于像我这样的新手来说,这有点太让人困惑了,我正在寻找一些不需要删除整个代码的东西。尽管如此,我还是会努力理解它是如何工作的,谢谢。啊,现在它有意义了!谢谢你的回答。啊,现在有道理了!谢谢你的回答。