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); 

结果就像 40 3 等等....试过了parseIntparseFloat.value结果总是有NaN.任何建议吗?

4

2 回答 2

12

您需要counter使用起始编号进行初始化,否则您将在undefined.

var counter = 0;

然后在循环中,使用parseInt,parseFloat或对.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 回答