功能定义但仍未定义

时间:2014-08-20 17:01:49

标签: javascript html setinterval increment stopwatch

我正试图在js中制作一个秒表,我的代码工作正常,直到我在秒表中包含Millisecond。

这是我的代码:

的index.html

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

的script.js

 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

我做错了什么?

2 个答案:

答案 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函数。现在,你传递的是字符串,而不是函数。