5

次の例のようなテーブルを含むhtmlがあります

<td class="topiccell">
    <span class="topicnormal">
        <a class="value" href="/topic/?lang=en&action=viewtopic&topic=http%3A%2F%2Fwww.wandora.org%2Fsparql%2Fresultset%2Fliteral%2F40">
                 40
        </a>
    </span>
</td>
<td class="topiccell">
   <span class="topicnormal">
       <a class="value" href="/topic/?lang=en&action=viewtopic&topic=http%3A%2F%2Fwww.wandora.org%2Fsparql%2Fresultset%2Fliteral%2F40">
                 3
        </a>
   </span>
</td>

そして、を使用して40、3、および別の75の数値を解析する必要があります.innerHTML。それでは、75個すべての数字を合計したいと思います。私は以下を使用しました

var valuelements = document.getElementsByClassName("value");
var features = new Array(valuelements.length);
for (var i=0; i<=features.length; i++){ 
  var val = valuelements[i].innerHTML;
  var counter = counter + val;
}
document.write(counter); 

結果は403などのようでした...試してみparseIntましparseFloat.valueが、結果は常にNaN.何か提案でしたか?

4

2 に答える 2

12

counter開始番号で初期化する必要があります。そうしないと、で数学を実行しundefinedます。

var counter = 0;

次に、ループで、、、または値の直接数値変換を使用parseIntparseFloatます.innerHTML

var counter = 0;

for (var i=0; i<features.length; i++){ 
  counter += parseFloat(valuelements[i].innerHTML);
}

最新のブラウザでは、次のことができます。

var count = [].reduce.call(valueelements, function(c, v) {
    return c + parseFloat(v.innerHTML);
}, 0);
于 2013-01-31T02:07:19.993 に答える
3

より機能的なアプローチを使用して、次のようなことを試してください。

var sum = [].map.call(valuelements, function(v) {
  return +v.textContent; }).reduce(function(a, b) { return a + b; });
于 2013-01-31T02:12:27.673 に答える