2010-12-26 22 views
0

javascriptを使って配列の要素の値を合計しようとしていますが、これは私のスクリプトです。今のjavascript summing up array

function sumAll() 
{ 
    var totalOverheads = 0; 
    var overheads = new Array(); 
    overheads = document.getElementsByName('overhead'); 
    for(i=0;i<overheads.length;i++) 
     if(!isNaN(overheads[i].value) || overheads[i].value != null || overheads[i].value != "" || overheads[i].value != '' || overheads[i].value != NULL) 
      alert(overheads[i].value); 
      //totalOverheads = parseInt(totalOverheads) + parseInt(overheads[i].value); 
    alert(totalOverheads); 
} 

は、forループの内側であれば条件で、警戒中の項目の値を表示し、まだそれ `sが正常に動作していないI`mは、それだけでもアイテムがあれば、すべての項目が表示されます入力が数字だけであれば、どのように操作できますか?

+0

'NULL'は' null'と同じです - あなたはそれを2度比較する必要はありません。 – nickf

+0

@nickf:大丈夫、私は何も入力しなくても、私にすべての価値を与えているのです! – sikas

+0

getElementsByNameはオブジェクトの配列を返します。それらをループする外側ループと、各配列内の項目をループする内側ループが必要です。 –

答えて

1

getElementsByNameはNodeListを返します。それが問題だったかどうかわから、とにかくありません:

var totalOverheads = 0; 
var overheads = document.getElementsByName('overhead'); 
var n; 
var i; // <<--- don't forget to initialise i 
for (i = 0; i < overheads.length; ++i) { 
    n = parseInt(overheads.item(i).value, 10); 
    if (!isNaN(n)) { 
     totalOverheads += n; 
    } 
} 
alert(totalOverheads); 

また、ブラケットを使用してください!

+0

私が浮動小数点を使用している場合、 'parseInt'の代わりに' parseFloat'を使用する必要がありますか? – sikas

+0

@sikasはい。それは同じ(しかしあなたが知っている、浮動小数点で)動作します。私はOPで使用されているので、parseIntを使用しました。 – nickf