Javascript JS函数秒表应用程序混淆了用户
我编写了一个javascript应用程序,但最终我完全弄糊涂了。这个js应用程序需要在分、秒和百分之一百秒的时间内运行。这个混乱的部分是在秒表显示的时候,在这个例子中是03:196:03。这是我的困惑。当秒表显示196时,它显示的是百分之一秒吗?是否有人可以检查我的功能,并告诉我在功能错误的情况下需要纠正哪些部分Javascript JS函数秒表应用程序混淆了用户,javascript,Javascript,我编写了一个javascript应用程序,但最终我完全弄糊涂了。这个js应用程序需要在分、秒和百分之一百秒的时间内运行。这个混乱的部分是在秒表显示的时候,在这个例子中是03:196:03。这是我的困惑。当秒表显示196时,它显示的是百分之一秒吗?是否有人可以检查我的功能,并告诉我在功能错误的情况下需要纠正哪些部分 <html> <head> <title>my example</title> <script type="tex
<html>
<head>
<title>my example</title>
<script type="text/javascript">
//Stopwatch
var time = 0;
var started;
var run = 0;
function startWatch() {
if (run == 0) {
run = 1;
timeIncrement();
document.getElementById("countDown").disabled = true;
document.getElementById("resetCountDown").disabled = true;
document.getElementById("start").innerHTML = "Stop";
} else {
run = 0;
document.getElementById("start").innerHTML = "Resume";
}
}//End function startWatch
function watchReset() {
run = 0;
time = 0;
document.getElementById("start").innerHTML = "Start";
document.getElementById("output").innerHTML = "00:00:00";
document.getElementById("countDown").disabled = false;
document.getElementById("resetCountDown").disabled = false;
}//End function watchReset
function timeIncrement() {
if (run == 1) {
setTimeout(function () {
time++;
var min = Math.floor(time/10/60);
var sec = Math.floor(time/10);
var tenth = time % 10;
if (min < 10) {
min = "0" + min;
}
if (sec <10) {
sec = "0" + sec;
} else if (sec>59) {
var sec;
}
document.getElementById("output").innerHTML = min + ":" + sec + ":0" + tenth;
timeIncrement();
},10);
}
} // end function timeIncrem
function formatNumber(n){
return n > 9 ? "" + n: "0" + n;
}
</script>
</head>
<body>
<h1>Stopwatch</h1>
<p id="output"></p>
<div id="controls">
<button type="button" id ="start" onclick="startWatch();">Start</button>
<button type="button" id ="reset" onclick="watchReset();">Reset</button>
</div>
</body>
</html>
你的代码太奇怪了 首先,您将document.getElementById用于不存在的元素:可能它们属于您的原始代码,而您的代码并没有完整发布 那我不明白你的计时方法: 每10毫秒启动一次timeIncrement:因此time/10给出了毫秒数 但是你计算分钟和秒,就好像它是秒数一样! 从那以后,一切都错了 无论如何,您可以使用Date对象的GetMillimess函数来简化这一切。试试以下方法: document.getElementByIdoutput.innerHTML=[ Math.floortime/100/60%60, Math.floortime/100%60, 时间%100 ].mapformatNumber.join':' var时间=0; var启动; var-run=0; 函数startWatch{ 如果运行==0{ run=1; 时间增量; }否则{ run=0; } } 功能表复位{ run=0; 时间=0; document.getElementByIdoutput.innerHTML=00:00:00; } 函数时间增量{ 如果运行==1{ setTimeoutfunction{ 时间++; document.getElementByIdoutput.innerHTML=[ Math.floortime/100/60%60, Math.floortime/100%60, 时间%100 ].mapformatNumber.join':' 时间增量; },10; } } 函数formatNumbern{ 返回n<10?0:+n; } startWatch
试着把这个问题发到网上怎么样。我今天才知道,这是针对这样的问题。@3abjari这个问题是关于更改代码的功能,而这些功能不属于代码评审。代码审查是为了清理代码,以便以更好的方式完成同样的事情。谢谢@SimonAndréForsbergy您可能需要sec-=60*min或一些模数运算。您是否尝试过将代码煮沸到最低限度?这将使回答您的问题更容易,您甚至可以在这个过程中自己找到答案。