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)。

到目前为止,我已经看到了很多问题

  • 分钟的初始值最初未在代码中设置,这会在代码中产生错误
  • 当您的代码中不再使用minutesecond输入字段时,我发现它们没有任何用处。(我可能已经使用了这些输入字段,并添加了我的小时字段)
  • 我做了一些更改,并根据小时、分钟和秒之间的转换提供了更好的计时器逻辑。仔细阅读提供的代码,看看它是否适合您。我已经删除了不需要的代码(您可以以任何方式使用相同的逻辑)

    您的基本计时器已准备就绪:)

    设秒=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。永远不要停止学习,继续前进。您还可以查看我的许多存储库