为什么我从JavaScript函数中获取NaN

时间:2014-09-10 14:23:15

标签: javascript

我有一个简单的JavaScript程序,将摄氏温度转换为fahreinheit,反之亦然。但是一个函数不起作用并返回NaN。

<script type="text/javascript">
    function CtoF() {
        c = parseInt(document.getElementById("celsiusTemp").value);
        fah = c * (9 / 5) + 32;
        document.getElementById("resC").innerHTML = fah;
    }

    function FtoC() {
        f = parseInt(document.getElementById("celsiusTemp").value);
        cel = (f - 32) * (5 / 2);
        document.getElementById("resF").innerHTML = cel;
    }
</script>
<body>
    <form>
        <p>Insert celsius temperatur:
            <input type="text" id="celsiusTemp" />
            <br>
        </p>
        <p>Insert fahrenheit temperatur:
            <input type="text" id="fahreheitTemp" />
            <br>
        </p>
        <input type="button" class="btn btn-success" onClick="CtoF()" Value="Calc Fahrenheit" />
        <input type="button" class="btn btn-warning" onClick="FtoC()" Value="Calc Celsius" />
    </form>
    <br/>
    <p>The Result is :
        <br/>
        <p>Result celsius to fahreinhet:</p><span id="resC"></span>

        <p>Result fahreinhet to celsius:</p><span id="resF"></span>

</body>

为什么在计算摄氏度时会得到NaN)

谢谢!

2 个答案:

答案 0 :(得分:6)

您可能需要替换:

f = parseInt(document.getElementById("celsiusTemp").value);

使用:

f = parseInt(document.getElementById("fahreheitTemp").value);

如果单击Calc Celsius按钮,它将尝试从摄氏度字段中获取值。如果该项为空,则parseInt将返回NaN

isNaN(parseInt("")) === true

答案 1 :(得分:2)

因为您的摄氏功能正在读取错误的输入,并且因为您在测试函数时没有输入该输入,所以它是一个空字符串parseInt变成非数字。