Javascript 函数已定义,但尚未定义

Javascript 函数已定义,但尚未定义,javascript,html,setinterval,increment,stopwatch,Javascript,Html,Setinterval,Increment,Stopwatch,我正在尝试用js制作秒表,我的代码工作正常,直到我的秒表中包含毫秒 这是我的密码: index.html 我的第二页 script.js var ss=0, mm=0, hh=0, ms=0; var一次=0; 函数gettime(){ 如果(一次==0){ 文件。写(“”); 一次++; } 设置间隔(“msss()”,100); } 函数msss(){//我已经定义了msss 打印时间(); 如果(ms>1000){ sec(); }否则{ ms+=100; } } 函数sec(){ m

我正在尝试用js制作秒表,我的代码工作正常,直到我的秒表中包含毫秒

这是我的密码:

index.html

我的第二页
script.js
var ss=0,
mm=0,
hh=0,
ms=0;
var一次=0;
函数gettime(){
如果(一次==0){
文件。写(“”);
一次++;
}
设置间隔(“msss()”,100);
}
函数msss(){//我已经定义了msss
打印时间();
如果(ms>1000){
sec();
}否则{
ms+=100;
}
}
函数sec(){
ms=0;
打印时间();
如果(ss>59){
min();
}否则{
ss+=1;
}
}
函数min(){
ss=0;
打印时间();
如果(毫米>59){
hr();
}否则{
mm+=1;
}
}
职能hr(){
mm=0;
打印时间();
hh+=1;
}
函数printtime(){
document.getElementById('stopwatch').innerHTML='H:'+hh+'M:'+mm+'S:'+ss+'MS:'+MS;
}
错误代码

ReferenceError:未定义msss

我做错了什么?

那么:

setInterval(msss, 100);

这将每100毫秒执行一次msss功能。现在,您传入的是字符串而不是函数。

问题在于您的
文档。write()
。使用这个是一种不好的做法。调用此函数时,页面将被完全擦除,并替换为代码

这将删除页面上的所有内容,包括JavaScript。因此,
mss
不再存在,因为您刚刚删除了它

这是在回答你先前的问题()时解释的

尝试以下方法:

document.body.innerHTML = '<h1 id="stopwatch"></h1>';
document.body.innerHTML='';

不应设置间隔(msss,100)?您的
setInterval
调用应该是这样的:
setInterval(msss,100)
是一个用
关闭的输入元素吗?而且,所发布的代码工作得很好->,正如所指出的,将字符串传递给
setInterval
是一种不好的做法,但不应该破坏任何东西。
setInterval(“msss()”,100)是不好的做法。传递字符串,使其使用
eval
,这是您不应该做的。使用
setInterval(msss,100)。另外,不要使用
文档。编写
。改用
document.body.innerHTML
<代码>文档。写入
将丢弃整个页面(将其删除),并将其替换为字符串。它可能已经删除了您的JavaScript,从而导致了问题。谢谢,它可以工作,但在Firefox 30.0上不工作。请提供技术帮助,传递
setInterval(“msss()”,100)工作正常,因为它经过评估。
setInterval(msss, 100);
document.body.innerHTML = '<h1 id="stopwatch"></h1>';