函数不断返回 NaN,学费计算器

Posted

技术标签:

【中文标题】函数不断返回 NaN,学费计算器【英文标题】:Function keeps returning NaN, tuition calculator 【发布时间】:2017-11-21 02:57:03 【问题描述】:

我似乎无法正确使用我的功能.....这是一个学费计算器。在这一点上,居住和学期并不重要。它只是信用*信用成本,但它不断返回 NaN。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
        <title>Greendale Community College</title>
    <script type="text/javascript">
        /* <![CDATA[ */
        /* ]]> */
        var numCredits = 0;
        var creditCost = 302;
        var instate = 0;
        var outstate = 0;
        var international = 0;
        var tuitionCost = number;
        function calcTuition(numCredits, creditCost) 
            var tuitionCost = numCredits * creditCost;
            document.write("Your tuition cost is $" + tuitionCost);
        
    </script>
    </head>
    <body>
        <p><center><font face="impact" font size="200" color="green">Greendale  Community College</font></center></p>
        <center><img src="greendale.jpg"   /></center>
        <h1><center>Tuition Calculator</center></h1>
        <form name="calculator" action="" method="get">
        <h2>Semester</h2>
        <h3>(choose a semester)</h3>
            <input type="radio" name="semesterFall"/> Fall 2018 <br />
            <input type="radio" name="semesterSpring"/> Spring 2018 <br />
            <input type="radio" name="semesterSummer"/> Summer 2018 <br />
        <h2>Residency</h2>
        <h3>(choose your residency)</h3>
            <input type="radio" name="instate" /> In-State <br />
            <input type="radio" name="outstate" /> Out-of-State <br />
            <input type="radio" name="international" /> International <br />
        <h2>Credits</h2>
        <h3>(enter your number of credits)</h3>
            <input type="text" name="numCredits" size="2" onchange="calcTuition(numCredits, creditCost)"/> Credits <br />
            <input type="button" name="tuition"  onclick="window.alert(calcTuition(numCredits, creditCost))" value="Calculate your Tuition" />
            </form>
    </body>
</html>

【问题讨论】:

至少有一个操作数不是数字。 您正在尝试在输入学分时进行计算,但尚未输入学费。您需要这两个值才能执行此功能,因此在您拥有这两个值之前不要调用calcTuition 我对这个很陌生,所以你的意思是什么?不要从哪里打电话? 【参考方案1】:

我查看了发生的情况,您似乎在尝试拨打numCredits,但它不是一个有效号码。它的确切类型是$[object HTMLInputElement]。 HTMLInputElement 和 Integer 之间的加法是未定义的行为,因此您获得的值为 NaN。

一种可能的解决方案是使用document.getElementbyId 方法返回实际元素,然后您可以对它们执行任何操作。

PS:您应该尝试调试自己的函数,您提到您是新手,但最好设置一些打印语句或使用交互式调试器来查看问题发生的确切位置。这样您就可以在解决问题的同时了解问题所在。

【讨论】:

我使用的是 Microsoft Visual Studio,如何调试? 这应该是一个不同的问题,但在问之前先做你的研究。【参考方案2】:
<script type="text/javascript">
     var c_amount = 302;
    function calcu_Tuition(Credits, c_amount) 
    //var Credits 
    var Credits = document.getElementById("Credits").value //it will get the value of Credits text box and be transfer to Credits variable.

    var tuition = 0;
        var tuition = Credits * c_amount;
        document.write("Your tuition cost is $" + tuition);
    

</script>

<body>
    <h2>Credits</h2>
    <h3>(enter your number of credits)</h3> 
        <input type="text" id="Credits" size="2" onchange="calcu_Tuition(Credits, c_amount)"/> Credits <br>
        <button id="tuition"  onclick="calcu_Tuition(c_amount)">Calculate your Tuition"</button>
        </form> 
</body>

【讨论】:

不要只是发布代码,解释你改变了什么以及为什么。我不清楚你想说什么。

以上是关于函数不断返回 NaN,学费计算器的主要内容,如果未能解决你的问题,请参考以下文章

如果参数是数字,为啥函数返回 NaN?

numpy 或 scipy 都有哪些可能的计算可以返回 NaN? [关闭]

JavaScript数学函数不起作用并返回Nan

jQuery 在简单计算中返回 NaN

当输入字段为空时,Javascript 计算返回 NaN [重复]

JavaScript —— 函数