0

テキストボックス (数量 * 価格)、チェックボックス、およびラジオから総計を計算する必要がある注文フォームと JavaScript がありますが、NaN エラーが発生するため、何かが欠けています。誰かがそれを修正するのを手伝ってもらえますか? どうもありがとう。

デモ

4

1 に答える 1

0

多くの人がコメントしているように、コードには深刻な欠点がいくつかあります。これらの懸念事項については繰り返しませんが、非常に重要であり、使用しているテクノロジに慣れるにつれて学習する必要があります。

NaNを取得する理由はこれです。フィールド オブジェクトは配列です。あなたのコードは、fields[f] = 0 など、任意のインデックスで fields 配列を設定します。

インデックスの配列にデータを入力すると、たとえば 5 の場合、コードはfields[5] = 0 ; を実行します。このステートメントにより、空の配列[]を持つことから、最初の 5 つのエントリがデフォルトで undefined [undefined, undefined, undefined, undefined, undefined, 0]に設定された 6 つのエントリを持つ配列を持つようになりました。

コードの後半で合計を実行して配列エントリを追加すると (文字列を準備した eval を使用)、これらの...undefined+0+undefined+8...は Not A Number エラーを生成します。

代わりに、これを防ぐ 1 つの方法は、次のようにフィールド配列にエントリをプッシュすることです。

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

push は、配列の末尾に 1 つのエントリを追加します。[]は、 push(0) すると[0]になります。

于 2012-10-21T20:58:14.670 に答える