javascript表单计算返回NaN

时间:2012-10-21 19:52:12

标签: javascript checkbox textbox radio nan

我有一个订单表格和一个JavaScript,应该从文本框(数量*价格),复选框和广播计算总计,但我遗漏了一些因为我收到NaN错误。有人可以帮我解决吗? 非常感谢。

DEMO

1 个答案:

答案 0 :(得分:0)

许多人评论说,你的代码有一些严重的缺点。我不会重复这些问题,但是,它们非常重要,你应该学习,因为你越来越熟悉你正在使用的技术。

您获得 NaN 的原因是这个。您的fields对象是一个数组。您的代码在任意索引处填充fields数组,即 fields [f] = 0 ;

当您为索引填充数组时,例如5,您的代码执行此 fields [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]