0

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

演示

4

1 回答 1

0

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

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

当您为索引填充数组时,例如 5,您的代码会执行此字段 [5] = 0 ;。使用此语句,您从拥有一个空数组[]变为拥有一个包含 6 个条目的数组,其中前 5 个条目默认为 undefined [undefined, undefined, undefined, undefined, undefined, 0]

现在稍后在您的代码中,当您进行求和并添加数组条目(使用 eval 准备一个字符串)时,这些...undefined+0+undefined+8...会产生 Not A Number 错误。

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

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

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

于 2012-10-21T20:58:14.670 回答