Javascript 如何修复不显示秒表新值的输出

Javascript 如何修复不显示秒表新值的输出,javascript,Javascript,我正在用vanilla JS编写秒表,启动秒表的代码不起作用。控制台中没有返回错误,因此这是我这边的错误。我认为它在startTime()函数或startInterval()函数中。这可能是我没有看到的超基本的东西。任何帮助都将是惊人的,谢谢朋友:) let time=0; 函数timeToString(){ 设diffInHrs=时间/3600000; 设hh=数学楼层(diffInHrs); 设diffInMin=(diffInHrs-hh)*60; 设mm=数学楼层(diffInMin)

我正在用vanilla JS编写秒表,启动秒表的代码不起作用。控制台中没有返回错误,因此这是我这边的错误。我认为它在startTime()函数或startInterval()函数中。这可能是我没有看到的超基本的东西。任何帮助都将是惊人的,谢谢朋友:)

let time=0;
函数timeToString(){
设diffInHrs=时间/3600000;
设hh=数学楼层(diffInHrs);
设diffInMin=(diffInHrs-hh)*60;
设mm=数学楼层(diffInMin);
设diffinse=(diffInMin-mm)*60;
设ss=数学楼层(Diffinse);
设formattedHH=hh.toString().padStart(2,“0”);
设formattedMM=mm.toString().padStart(2,“0”);
设formattedSS=ss.toString().padStart(2,“0”);
返回(formattedHH+“:”+formattedMM+“:”+formattedSS);
}
让startButton=document.getElementById(“startWatch”);
让我们开始吧;
让时光流逝;
addEventListener(“单击”,函数开始(){
startTime=Date.now();
setInterval(函数printTime(){
elapsedTime=(Date.now()-startTime);
document.getElementById(“输出”).innerHTML=timeToString(elapsedTime);
}
), 1000 });
函数停止(){
}
函数重置(){
document.getElementById(“输出”).innerHTML=“00:00:00”;
}
输入{
位置:绝对中心;
显示:内联块;
对齐项目:居中;
框大小:边框框;
利润率:0px,8px;
填充:0.75雷姆5雷姆;
光标:指针;
转换:转换(400px,400px);
文字装饰:无;
边框:1px实心;
背景色:rgb(255、168、0);
字体大小:14px;
线高:150%;
}
输入:悬停{
过渡时间:0.5s;
背景色:rgb(255、211、99);
}
#输出{
显示:内联块;
宽度:435px;
填充:0.75雷姆5雷姆;
转换:转换(404px,350px);
文本对齐:居中;
边框:1px实心;
}

秒表
身体{
背景色:rgb(255、168、0);
}
00:00:00

只需删除你的
让时间=0并将参数
time
添加到
timeToString
中,作为
函数timeToString(time)

答案中添加的增强功能很少。这里提到了一些评论

  • 使用
    文档检索resetButton和stopButton.getElementById
    &分配单击事件
  • 取新对象
    let间隔,使用interval对象保存从setInterval返回的对象,该对象稍后将用于停止interval
  • 内部
    startButton.addEventListener
    added
    clearInterval(间隔)
    before
    setInterval
    否则,当您在start上单击第二次时,它将启动新的interval,并且将有两个interval同时运行。所以你的手表会在1秒内改变两次。第三次单击时,它将同时运行三次间隔,watch将在1秒内执行三次更改,依此类推
  • 使用
    interval=setInterval(函数printTime(){
    。设置
    interval
    setInterval
    返回值。它可以与
    clearInterval(interval)
    一起使用以停止interval
  • 添加了
    clearInterval(interval);
    内部
    stop()
  • reset()
    中添加了
    startTime=Date.now();
    ,因此它将再次从0开始显示时间
//添加时间参数
函数timeToString(时间){
设diffInHrs=时间/3600000;
设hh=数学楼层(diffInHrs);
设diffInMin=(diffInHrs-hh)*60;
设mm=数学楼层(diffInMin);
设diffinse=(diffInMin-mm)*60;
设ss=数学楼层(Diffinse);
设formattedHH=hh.toString().padStart(2,“0”);
设formattedMM=mm.toString().padStart(2,“0”);
设formattedSS=ss.toString().padStart(2,“0”);
返回(formattedHH+“:”+formattedMM+“:”+formattedSS);
}
让startButton=document.getElementById(“startWatch”);
//按id获取重置和停止按钮
让resetButton=document.getElementById(“resetWatch”);
让stopButton=document.getElementById(“秒表”);
让我们开始吧;
让时光流逝;
let interval;//使用interval对象保存从setInterval返回的对象,该对象稍后将用于停止interval。
addEventListener(“单击”,函数开始(){
startTime=Date.now();
//清除interval以停止interval对象保持的interval。
间隔时间;
//将interval对象设置为从setInterval返回值。
interval=setInterval(函数printTime(){
elapsedTime=(Date.now()-startTime);
document.getElementById(“输出”).innerHTML=timeToString(elapsedTime);
}), 1000
});
//添加重置和停止单击事件列表器
resetButton.addEventListener(“单击”,重置);
stopButton.addEventListener(“单击”,停止);
函数停止(){
//清除interval以停止interval对象保持的interval。
间隔时间;
}
函数重置(){
//同时重置startTime,使其从0开始显示时间
startTime=Date.now();
document.getElementById(“输出”).innerHTML=“00:00:00”;
}
输入{
位置:绝对中心;
显示:内联块;
对齐项目:居中;
框大小:边框框;
利润率:0px,8px;
填充:0.75雷姆5雷姆;
光标:指针;
转换:转换(400px,400px);
文字装饰:无;
边框:1px实心;
背景色:rgb(255、168、0);
字体大小:14px;
线高:150%;
}
输入:悬停{
过渡时间:0.5s;
背景色:rgb(255、211、99);
}
#输出{
显示:内联块;
宽度:435px;
填充:0.75雷姆5雷姆;
转换:转换(404px,350px);
文本对齐:居中;
边框:1px实心;
}

秒表
身体{
背景色:rgb(255、168、0);
}
00:00:00