あなたが探しているのは、それではありませvalue
んinnerHTML
。
だから、言うよりも
number = number + noList[i].value
あなたは言うべきです
number = number + noList[i].innerHTML
さらに、数値に整数の加算を行う前に、数値が数値であることを確認する必要があります。だから言うよりも
var number;
言うべき
var number = 0
編集:あなたのコメントによると、問題は innerHTML が文字列として返されることです。
これに対処する方法は 4 つあります。
方法 1:
list_item = noList[i].innerHTML
if(list_item.charAt(0) == "0"){
number = number + parseInt(list_item, 10);
} else {
number = number + parseInt(list_item);
}
説明 1: 文字列を list_item に読み込みます。次に、文字列の最初の文字を調べて、基数を決定します。これは、古いブラウザとの互換性を確保するためです。ECMAScript 5 の時点で、parseInt のデフォルトは 10 進数ですが、古い実装では、0 で始まる文字列に 8 進数を使用することがよくありました。
方法 2:
list_item = +noList[i].innerHTML
number = number + list_item
説明 2: すべての型には単項演算子があります。整数の場合、これは+
であるため+
、何かに適用すると整数にキャストされ、適用!!
すると にキャストされますBoolean
。
方法 3:
list_item = Number(noList[i].innerHTML);
number = number + list_item
説明 3: Number オブジェクトは、数値を解析して便利なメソッドを提供しようとするコンストラクター オブジェクトです。基本的な解析は他のブラウザでも機能しますが、現時点では Firefox でのみ完全にサポートされています。
方法 4:
list_item = noList[1].innerHTML*1
number = number+list_item
説明 4: Javascript は Duck Typing を使用します (アヒルのように歩き、アヒルのように震える場合、それはアヒルでなければなりません)。したがって、項目が *1 に応答する場合、それは Number でなければなりません。浮動小数点数でも機能するという追加の利点があります。
どちらをお勧めしますか?
Number コンストラクターはあまり広く知られていない/サポートされていないため、当分の間、このコンストラクターには近づかないでしょう。これはparseInt
最も広く知られている方法であり、ほとんどの開発者はコードが何をしているかを頭の中で知っているためです。
Chrome と最近parseInt
の Firefox では、はるかに高速ですが、古いバージョンの Firefox では Number コンストラクターが同様のパフォーマンス上の利点を提供します (完全にサポートされています)。
ただし、IE は一般的に遅いですが、最も速いのは単項演算子と乗算です (それほどではありませんが)。
反対する唯一の本当に重要な議論parseInt()
は Opera であり、OperaparseInt
は他の方法よりもほぼ 3 倍劣っています。