1

カートでJavaScriptの計算が機能しません。

私のHTML部分には、「price-」と「qty-」のIDを持つものを除いて、他の多くの入力要素があります。どういうわけか、他の入力要素が配列を台無しにしていると思います。サンプル:

<input type="hidden" id="price-1" value="10.50"/>
<input type="hidden" id="qty-1" value="1"/>
<input type="hidden" id="shipFee-1" value="4.00"/>
<input type="hidden" id="tax-1" value="0.70"/>

<input type="hidden" id="price-2" value="19.20"/>
<input type="hidden" id="qty-2" value="2"/>
<input type="hidden" id="shipFee-2" value="4.00"/>
<input type="hidden" id="tax-2" value="1.30"/>

(価格*数量)の合計を「48.9」としてアラートしたい。問題のあるjavascriptの部分は次のとおりです。

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array();

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[i] = parseFloat(document.getElementById(inputs[i].id).value);
    alert(price[i]); //alert result: 10.5 and 19.2
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[i] = parseInt(document.getElementById(inputs[i].id).value);
    alert(qty[i]); //alert result: 1 and 2
  }
}

alert(price.length); //alert result: 5
alert(qty.length); //alert result: 6

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: NaN
4

2 に答える 2

0

気にしないでください、私はこの質問を投稿してから10分後に答えを見つけました。私は今馬鹿のように感じます==;
入力要素の配列に使用されているため、「i」の代わりに配列に新しい変数を使用する必要があります。

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array(),
    j = 0, k = 0;

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[j] = parseFloat(document.getElementById(inputs[i].id).value);
    j++;
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[k] = parseInt(document.getElementById(inputs[i].id).value);
    k++;
  }
}

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: 48.9
于 2013-01-29T03:39:53.480 に答える
0

'i'ループカウンターに基づいて価格配列を構築しています。10.50はprice[0]に入り、それに伴う1の数量はqty [1]に入れられ、次にiは配列を変更せずに値2と3を通過します。次に、i = 4の場合、price [4]は19.20を取得し、qty [5]は2を取得し、次に通過します。

結果の配列は次のようになります

price[0] = 10.5, price[4] = 19.20
qty[1] = 1, qty[5] = 2

最後にループして数学を試してみると、基本的に次のようになります。

// i = 0
total = total + price[0] * qty [0] // price[0] = 10.50, but qty[0] = undefined, so total = Nan

// i = 1
total = total + price[1] * qty [1] // price[1] = undefined, qty[1] 1, so total = Nan

// etc.

わかる?

于 2013-01-29T03:43:31.000 に答える