得到不是数字(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”或其他),则结果为转换将是NaN
。 NaN
时代任何东西都是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())