javascript秒表用户输入
有人知道为什么我的计数器从一开始就一直计数吗javascript秒表用户输入,javascript,html,Javascript,Html,有人知道为什么我的计数器从一开始就一直计数吗 var分钟; var第二; var音频; var区间; var button=HTMLButtonElement.value=“恢复” 函数yok(){ document.getElementById(“btninput”).disabled=true 分钟=document.getElementById(“分钟”).value second=document.getElementById(“second”).value 间隔=设定间隔(坦巴,10
var分钟;
var第二;
var音频;
var区间;
var button=HTMLButtonElement.value=“恢复”
函数yok(){
document.getElementById(“btninput”).disabled=true
分钟=document.getElementById(“分钟”).value
second=document.getElementById(“second”).value
间隔=设定间隔(坦巴,1000)
函数tambah(){
第二--
如果(分钟!=0和秒==-1){
分钟--
秒=59
}else if(分钟==0和秒==0){
清除间隔(间隔)
document.getElementById(“hasill”).innerHTML=“完成!!!”
document.getElementById(“btninput”).disabled=false
}
document.getElementById(“hasil”).innerHTML=minute+“:”+second
}
}
函数停止(){
document.getElementById(“btninput”).disabled=false
清除间隔(间隔)
document.getElementById(“btninput”).innerHTML=按钮;
}
计时器
00
开始停止当您按resume时,
yok()
被调用。这将重置上的分钟和秒
minute = document.getElementById("minute").value
second = document.getElementById("second").value
您可以添加一个条件来处理简历的案例
if (document.getElementById("btninput").innerHTML !== button){
minute = document.getElementById("minute").value;
second = document.getElementById("second").value;
}
编辑:
为了更清楚地解释,您应该记住,resume按钮仍然将onclick事件设置为yok()
(因为您只将innerHTML从start
更改为resume
)。
那么,如果按resume,会发生什么情况?那么,yok()
函数将被执行,并运行该行
minute = document.getElementById("minute").value
second = document.getElementById("second").value
它将minute
和second
的值设置为输入字段中的任何值(基本上重置计时器)
因此,必须做的是检查按钮是否设置为开始按钮状态,或恢复按钮状态。所以就像我在上面所做的那样,最简单的方法(虽然不是最干净的)是检查按钮上的innerHTML是否显示“resume”
此外,正如ImranRafiqRather所提到的,最好将默认值设置为minute
和second
我建议做一些类似的事情
minute = document.getElementById("minute").value || 0;
second = document.getElementById("second").value || 0;
这确保了如果元素的值是falsy,代码仍然会将变量设置为0(您可能想了解falsy值和|
(或)语法,它可能看起来很奇怪,但是的,javascript是一种奇怪的语言:p)。到目前为止,我已经看到了很多问题
分钟和秒的初始值最初未在代码中设置,这会在代码中产生错误
当您的代码中不再使用minute和second输入字段时,我发现它们没有任何用处。(我可能已经使用了这些输入字段,并添加了我的小时字段)
我做了一些更改,并根据小时、分钟和秒之间的转换提供了更好的计时器逻辑。仔细阅读提供的代码,看看它是否适合您。我已经删除了不需要的代码(您可以以任何方式使用相同的逻辑)
您的基本计时器已准备就绪:)
设秒=0;
设分钟=0;
设小时=0;
var区间;
var按钮=(HTMLButtonElement.value=“Resume”);
函数yok(){
document.getElementById(“btninput”).disabled=true;
间隔=设定间隔(塔巴,1000);
}
函数tambah(){
//如果(分钟!=0和秒==-1){
//分钟--;
//秒=59;
//}else如果(分钟==0&&second==0){
//间隔时间;
//document.getElementById(“hasill”).innerHTML=“Finish!!!”;
//document.getElementById(“btninput”).disabled=false;
// }
//document.getElementById(“hasil”).innerHTML=minute+“:”+second;
第二++;
document.getElementById(“second”).value=second;
如果(秒===60){
分钟=分钟+1;
document.getElementById(“分钟”).value=minute;
秒=0;
如果(分钟===60){
小时=小时+1;
document.getElementById(“小时”)。值=分钟;
分钟=0;
}
//你可以从这里往北走
}
}
函数停止(){
document.getElementById(“btninput”).disabled=false;
间隔时间;
document.getElementById(“btninput”).innerHTML=按钮;
}
Javascript中的计时器
计时器
H
M
s
开始
停止
单击“恢复”时,second=59代码>被命中。亲爱的Tulus,您在函数yok()中的两个的remove from one上使用了id=“husill”。您正在设置变量“minute”和“second”的值,这些值在间隔内没有变化。在yok()函数中,minute和second的值是空字符串“”,因为它们中还没有任何值。这使得if()条件也失败了。你能给我一个完整的正确代码吗confused@Kenta野本:首先,分秒从未设定过。包含空字符串。该程序仍然运行异常。。。从-1到--@Tulsus Ibrahim的起始秒数。如果您检查代码并使用console.log(分钟)和console.log(秒),您将看到分钟和秒包含空字符串。@ImranRafiqRather如果您不向输入字段提供任何输入,则会发生这种情况。这个问题可以通过给出一个默认值来解决。@Kento Nomoto真的!因此,我们必须确保我们设置了秒、分钟和小时的初始值(我相信这一点),并找出一个逻辑。让我花点时间调试一下Tulus Ibrahim的代码。@TulusIbrahim非常欢迎你。我是一个开发者。任何时候您需要任何帮助,都可以通过电子邮件发送给我:emmeiwhite@gmail.com或者whatsapp me 07006312148。永远不要停止学习,继续前进。您还可以查看我的许多存储库