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