得到不是数字(NaN)错误html / js

我先点击单选按钮时出现NaN错误。 当我点击第一个按钮时,该页面有一个单选按钮,它表示NaN,剩下的2个按钮没有响应

这是我的HTML

<input type="hidden" name="totalamount" id="totalamount" value="" /    

我也提到了我的JS

 $(document).ready(function(){ $('input[name=rmr]').click(function () { //make sure one is checked if($('input[name=rmr]:checked').length > 0) { $('#finalamount').html($("#totalamount").val() * $("input[name=rmr]:checked").val()); } }); }); 

三件事:

1)当您使用“totalamount”元素中的金额时,必须要问:您确定吗?

 value="" 

…输出有效数字? 因为如果没有,那么代码

 $('#finalamount').html($("#totalamount").val() * $("input[name=rmr]:checked").val()); 

……确实会导致NaN*运算符将尝试将其两个操作数从字符串转换为数字,当然如果该PHP代码输出的值不是有效数字(例如,如果它是“$ 0.00”或其他),则结果为转换将是NaNNaN时代任何东西都是NaN

“totalamount”元素中的无效金额示例产生的内容与您描述的行为非常相似。 (那个代码和你的代码不一样,我做了一些非常轻松的重构,见下文。但是为了演示一个无效的数字,这没关系。)

2)问题文本中隐藏输入的末尾没有> 。 如果你做了直接的复制粘贴,我想知道这可能是问题吗?

3)当你使用jQuery时,不需要onclick属性。 代替:

 $(document).ready(function(){ $("input[name=rmr]").click(function(){ var checked = $("input[name=rmr]:checked"); updatePayment(this.value); if (checked.length > 0) { // make sure one is checked { $("#finalamount").html( $("#totalamount").val() * checked.val() ); } }); }); 

…假设您希望每次都调用updatePayment

实例

updatePayment折叠到主要click行为中可以避免在调用DOM0( onclick属性)处理程序和DOM2处理程序(与jQuery一起使用的处理程序)的顺序中可能存在的任何问题。

它对我来说很好。 请在jsfiddle中找到工作代码。 您必须确保totalamount输入中的值是数值。 您可以使用parseFloat()将字符串值转换为浮点值。 防爆

  parseFloat($("#totalamount").val()) * $("input[name=rmr]:checked").val() 

由于javascript负责类型转换,因此不需要@Crowder parseFloat()

您尝试在计算之前放置一个alert() / console.log()命令,以查看totalAmount是否具有非数字值。 例如: alert($("#totalamount").val())