0

ユーザーが入力した複数の値の直系映像を計算する Javacript コードをいくつか作成しました。これがJavascriptコードです...

var totalLinealFootage = 0;
for (var i = 0; i <= 24; ++i) 
{
    var p = +document.getElementById('pf' + i).value;
    var f = +document.getElementById('ff' + i).value;
    var i = (+document.getElementById('if' + i).value)/12;

    if (!isNaN(p) && !isNaN(f) && !isNaN(i)) 
    {
        totalLinealFootage += (f+i)*p;
    }
}

今のところ、入力にどんな値を入れても、totalLinealFootageには値がありませんか?

4

2 に答える 2

3

の再利用がiループをつまずかせていると思います。ループの最後で をfor処理するiと、値が完全に変更されている可能性があります。

24 より大きい値に設定すると、条件により、ループは次の繰り返しの開始時に終了しvar i = (+document.getElementById('if' + i).value)/12;ます。ii <= 24

代わりに、ループ インデックスと計算の値に別の変数名を使用します。

于 2013-06-07T17:59:10.730 に答える
0

マークアップ:

<input id="pf0" value="1" />
<input id="ff0" value="2" />
<input id="if0" value="3" />

JavaScript:

var totalLinealFootage = 0,i,p,f,j;
for (i = 0; i < 1; i+=1) {
    p = document.getElementById('pf' + i).value;
    f = document.getElementById('ff' + i).value;
    j = (document.getElementById('if' + i).value)/12;
    totalLinealFootage += ((f+j)*p);
    console.log(totalLinealFootage);
}

これは私にとってはうまくいきました。@TJ Crowderが言ったように、入力を使用していること、および0から24までのすべての入力があることを確認する必要があります。また、ループ内の var i を変更しました。これを使用してループ カウントを制御し、変数をループの外に移動して、すべてのパスを再定義しないようにしたため、混乱を招きました。

編集:最初の回答も参照してください。ループ内で再定義されたのは var i だったと思います。

于 2013-06-07T18:09:51.833 に答える