提问者:小点点

InnerHTML说NAN在更新


我正在尝试重新创建look DM-2飞行软件,考虑到它是用JS编写的。 我正在试着做一个倒计时钟。 但是当我去更新innerHTMl时,它吐出了NAN,而且函数没有重复。 任何线索都会有帮助。 HTML

    <!DOCTYPE html>
<html>
<head>
    <title>Dragon OS</title>
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
    <div id="statusBarContainer">
        <button id="statusCloseButton" onclick="hideStatusRight()"><p id="closeButtonText">Close</p></button>
        <div id="statusBar">
        <h1>State:</h1>
        <h2 id="statusState">Startup</h2>
        <h1>T+:</h1>
        <h2 id="statusTplus">-60</h2>
        </div>
    </div>
    <div id="topBar">
        <button class="borderButton">Home</button>
        <button class="borderButton">Attitude</button>
        <button class="borderButton">Target</button>
        <button class="borderButton">Orbit Info</button>
        <button class="borderButton">Docking</button>
        <button class="borderButton">Procedures</button>
        <button class="borderButton">Communication</button>
        <button class="borderButton">Vehicle</button>
        <button class="borderButton">Calculator</button>
        <button class="borderButton redText" onclick="abort()">Emergency</button>
    </div>
    <script type="text/javascript" src="script.js"></script>
    <script type="text/javascript" src="statusUpdate.js"></script>
</body>
</html>

JS

var displayState = document.getElementById("statusState");
var displayTplus = document.getElementById("statusTplus");
var state = {
    altitude : 0,
    abort : false,
    pitch : 0,
    yaw : 0,
    roll  : 0,
    inAtmopshere : true,
    TPlus : -60
};
setInterval(checkStatus(), 1000);

function checkStatus(){
    state.TPlus++;
    displayTplus.innerHTML = state.Tplus;
}
function abort(){
    state.abort = true;
    displayState.style.color = "red";
    displayState.innerHTML = "ABORT";
}

共2个答案

匿名用户

当前,它将CheckStatus的结果提供给SetInterval,该结果不返回任何内容。

您应该移除setInterval(checkStatus(),1000);这一行中的括号,如下所示:setInterval(checkStatus,1000);,以提供对函数本身的引用。

匿名用户

两件事

>

  • 在setInterval中,用户setInterval(function(){checkStatus()},1000);setInterval(checkStatus,1000);

    使用state.tplus代替state.tplus

    setInterval(checkStatus,1000);

    函数checkStatus(){state.tplus++;displaytplus.innerhtml=state.tplus;}

    小提琴:https://jsfiddle.net/ranjitss/2nk7evds/2/