【问题标题】:Using Javascript to calculate form fields -- get NaN as a result使用 Javascript 计算表单字段——结果是 NaN
【发布时间】:2013-03-16 16:07:12
【问题描述】:

我创建了一个简短的表单,它应该根据用户输入来计算值。我已经弄清楚了大部分,但似乎无法让结果显示在总计字段中。相反,我得到的是 NaN。

我正在尝试使用 parseInt,但还没有运气。

这是我目前所拥有的:

Javascript:

 var AdPrice = document.getElementsByTagName('input') = 0;
  var ColorCharge = document.getElementsByTagName('input') = 0;
  var WebAd = document.getElementsByTagName('input') = 0;
  var AdSubtotal = 0;
  var DownPayment = document.getElementsByTagName('input') = 0;
  var TotalPrice = 0;
  var Payments = document.getElementsByTagName('input') = 0;
  var TotalPayment = 0; 

function updateTotal()
{
  var subtotal = AdPrice + ColorCharge + WebAd;
  var total = subtotal - DownPayment;
  var totalmonthlypayment = total / Payments;

 parseFloat(document.getElementById('AdSubtotal').value = subtotal);
 parseFloat(document.getElementById('TotalPrice').value = total);
 parseFloat(document.getElementById('Payment').value = totalmonthlypayment);


}

HTML:

<fieldset>
              <legend>Payment Details</legend>

             Ad Charge $

              <input type="text" name="AdPrice" id="AdPrice" class="medium" onChange="updateTotal()" /><br />

              Color Charge +

              <input type="text" name="ColorCharge" id="ColorCharge" class="medium" onChange="updateTotal()" /><br />

              Web Ad +
              <input type="text" name="WebAd" id="WebAd" class="medium" onChange="updateTotal()" /><br />

              Subtotal =

              <input type="text" name="AdSubtotal" id="AdSubtotal" readonly class="medium"  /><br />

           Down Payment -

           <input type="text" name="DownPayment" id="DownPayment" class="medium" onChange="updateTotal()" /><br />

           Total = 
           <input type="text" name="TotalPrice" id="TotalPrice" readonly class="medium"  /><br /><br />



           # Consec. Payments \

             <input type="text" name="Payments" id="Payments" class="medium" onChange="updateTotal" /><br />

            Amt Each Payment $ 

            <input type="text" name="Payment" id="Payment" class="medium" readonly  /><br /><br />

            <input type="checkbox" name="ProratedCheck" id="ProratedCheck" /> <span style="margin-right:10px;">Prorated/Length</span><input type="text" name="ProratedLength" id="ProratedLength" />
</fieldset>           

我还有一把小提琴:

http://jsfiddle.net/kjetterman/eHQV4/10/

【问题讨论】:

  • 没什么私人的,但您需要阅读有关如何创建表单的指南,因为这些都不能按应有的方式工作。
  • 您不应该使用 getElementsByTagName 来获取单个输入,因为这会获取所有输入标签,而不仅仅是您想要的标签。阅读一些关于 jQuery 的知识会很有用,可以帮助您获得要计算的表单元素。
  • 您需要学习基本的 Javascript。像var AdPrice = document.getElementsByTagName('input') = 0; 这样的语句应该做什么?您认为您将 0 分配给什么?
  • 您没有注意到 Javascript 控制台中的错误“ReferenceError: Left side of assignment is not a reference.”吗?

标签: javascript forms calculator nan


【解决方案1】:

在开头除以零(小计)。

并且: 这种绑定有效吗?我想不是。对我来说很新......

在方法中放置“getElements”行怎么样?

【讨论】:

    【解决方案2】:

    您需要处理的 javascript 上有几个错误,正如您的问题的 cmets 所述,您应该使用 getElementById 检索 DOM 元素,您遇到的另一个问题是您的代码在浏览器得到的响应目前可能没有 DOM 准备好工作,因此您的所有引用都返回为 NULL。这是工作版本,您仍然需要为初始值为零时添加一些验证,这样您就不会得到 NaN 作为操作的结果。

    http://jsfiddle.net/Wy7kE/2/

    【讨论】:

    • 谢谢!这就是我一直在寻找的。最初,我正在寻找不同的方法来做到这一点,并尝试应用我认为合乎逻辑的方法。正如您从我的代码中可以看出的那样,我对此很陌生。感谢您花时间看它! :)
    • 我已经成功了!我决定用 jQuery 重写它。您帮助我解决了如何使用 parseFloat 的主要问题。这是小提琴:jsfiddle.net/kjetterman/2XLcK/8>
    猜你喜欢
    • 2020-12-29
    • 2014-07-22
    • 2012-10-11
    • 2017-09-14
    • 2018-03-19
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多