javascript表单计算返回NaN

javascript表单计算返回NaN,javascript,checkbox,textbox,radio,nan,Javascript,Checkbox,Textbox,Radio,Nan,我有一个订单和一个JavaScript,它应该从文本框(数量*价格)、复选框和收音机中计算总金额,但我缺少一些东西,因为我收到了一个NaN错误。谁能帮我修一下吗? 非常感谢 正如许多人评论的那样,您的代码存在一些严重的缺陷。我不会重复这些问题,但是,它们非常重要,随着您对所使用的技术越来越熟悉,您应该学习 您得到NaN的原因如下。字段对象是一个数组。您的代码以任意索引填充字段数组,即字段[f]=0 当您为索引填充数组时,比如5,您的代码将执行以下操作:字段[5]=0;。使用此语句,您可以从一个空

我有一个订单和一个JavaScript,它应该从文本框(数量*价格)、复选框和收音机中计算总金额,但我缺少一些东西,因为我收到了一个NaN错误。谁能帮我修一下吗? 非常感谢


正如许多人评论的那样,您的代码存在一些严重的缺陷。我不会重复这些问题,但是,它们非常重要,随着您对所使用的技术越来越熟悉,您应该学习

您得到NaN的原因如下。字段对象是一个数组。您的代码以任意索引填充字段数组,即字段[f]=0

当您为索引填充数组时,比如5,您的代码将执行以下操作:字段[5]=0;。使用此语句,您可以从一个空数组[],变成一个包含6个条目的数组,前5个条目默认为未定义的[未定义,未定义,未定义,未定义,未定义,0]

现在,在代码的后面部分,当您进行求和并添加数组项时(使用eval准备了一个字符串),这些…undefined+0+undefined+8…会产生一个非数字错误

相反,防止这种情况的一种方法是将项推送到字段数组中,如:

if (userInputs[f].value)
{
  fields.push(userInputs[f].value);
}
else
{
  fields.push(0);
}

push将在数组末尾添加一个条目[]将变为[0]如果你推送(0)

你应该从阅读和修复JS Bin显示的5条警告开始。整个概念是有缺陷的,将计算变量作为字符串启动,然后将其他字符串连接到它…并期望返回一个数字。使用控制台记录将看到的值;这是一个真正的麻烦你不应该试图修复这个麻烦,而应该从头开始重写它,而不使用
eval
。因为现在您实际上是在以javascript代码的形式执行用户输入(表单字段值)!你们离麻烦只有一步之遥(接受url参数)。谢谢你们所有人的建议,我以为我已经接近解决这个表单了,但显然我不是。目前我看到的唯一解决方案是深入学习JavaScript。