2010-12-04 12 views
1

これがうまくいかない理由が分かる人はいますか? NANを生成し、数字のためにリセットされた場合(var入力のドキュメントは0を生成する。)スクリプトは、product_total_price_PRI_ ...のIDで始まる無限の数のフィールドを追加することになっている。Javascript NANまたは0を与える簡単な計算

明らかに私は何かを見逃し、それを見しようとしているから頭痛を得た

function getFields() { 
    var inputs = document.getElementsByTagName('input'); 
    var result = 0; 
    for(var i = 0; i < inputs.length; i++) { 
     if(inputs[i].id.indexOf('product_total_price_PRI_') == 0); 
      result += parseFloat(inputs[i].value); 
    } 

    alert(result); 
} 

答えて

3

あなたif()構文がオフになって、文を終了;ありますので、あなたのresult +=ある常にランニング、それは次のようになります。

function getFields() { 
    var inputs = document.getElementsByTagName('input'); 
    var result = 0; 
    for(var i = 0; i < inputs.length; i++) { 
     if(inputs[i].id.indexOf('product_total_price_PRI_') == 0) //no ; here 
      result += parseFloat(inputs[i].value); 
    } 

    alert(result); 
} 
+0

ありがとうございました。ニック、私はばかでなければなりません –

0

あなたが持っている;後のあなたのif削除する必要があります

また
if(inputs[i].id.indexOf('product_total_price_PRI_') == 0) 
    result += parseFloat(inputs[i].value); 

それは、入力内の入力した文字列が数値であるかどうかを確認するために、常に良い考えです:空白

if(inputs[i].id.indexOf('product_total_price_PRI_') == 0) 
{ 
    var temp = parseFloat(inputs[i].value); 
    if (!isNaN(temp)) { 
     result += temp; 
    } 
} 
0

は、フィールドはではなく、NaNと評価されます。 NaNの値を追加しないようにする必要があります

function getFields() { 
    var inputs = document.getElementsByTagName('input'); 
    var result = 0; 
    for (var i = 0; i < inputs.length; i++) { 
     if (inputs[i].id.indexOf('product_total_price_PRI_') == 0) { 
      var val = parseFloat(inputs[i].value); 
      if (val - 0 == val) // will be false if val is NaN 
       result += val; 
     } 
    } 

    alert(result); 
} 
関連する問題