我正试图在js中制作一个秒表,我的代码工作正常,直到我在秒表中包含Millisecond。
这是我的代码:
<html>
<head>
<title>My Second Page</title>
<script src="script.js"></script>
</head>
<body>
<input type="button" onclick="gettime()" value="Start Stopwatch"></a>
</body>
</html>
var ss = 0,
mm = 0,
hh = 0,
ms = 0;
var once = 0;
function gettime() {
if (once == 0) {
document.write('<h1 id="stopwatch"></h1>');
once++;
}
setInterval("msss()", 100);
}
function msss() { // I have defined msss
printtime();
if (ms > 1000) {
sec();
} else {
ms += 100;
}
}
function sec() {
ms = 0;
printtime();
if (ss > 59) {
min();
} else {
ss += 1;
}
}
function min() {
ss = 0;
printtime();
if (mm > 59) {
hr();
} else {
mm += 1;
}
}
function hr() {
mm = 0;
printtime();
hh += 1;
}
function printtime() {
document.getElementById('stopwatch').innerHTML = 'H: ' + hh + 'M: ' + mm + ' S: ' + ss + ' MS: ' + ms;
}
错误代码
ReferenceError:未定义msss
我做错了什么?
答案 0 :(得分:1)
问题在于你document.write()
。使用它是一种不好的做法。发生这种情况时,页面被完全删除,并替换为代码。
这会删除页面上的所有内容,包括JavaScript。因此,mss
不再存在,因为您刚删除它。
这是对前一个问题(https://stackoverflow.com/a/25398255)的答案解释的。
尝试类似:
document.body.innerHTML = '<h1 id="stopwatch"></h1>';
答案 1 :(得分:0)
怎么样:
setInterval(msss, 100);
这将每100毫秒执行一次msss函数。现在,你传递的是字符串,而不是函数。