JS:For循环中的跨度值的总和

时间:2017-12-08 09:44:16

标签: javascript string for-loop sum type-conversion

我在span标记中有以下值:

UIViewController

在JS中我想得到这些值的总和。所以我做了以下For Loop:

<div id="aantallen">
 <span>3</span>
 <span>2</span>
</div>

然而,3和2是文本,所以我在警报中得到了Nan。我的问题:如何将3和2转换为字符串,以便我可以将这些值相加?

我尝试使用String(i);但无法让它发挥作用。

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

您需要将DOM元素的内容转换为Number。 然后,您可以使用reduce来计算总和。

const spans = document.querySelectorAll('#aantallen span');

const result = Array.from(spans).reduce((sum, spanElm) => sum + Number(spanElm.textContent), 0)

console.log(result);
<div id="aantallen">
  <span>3</span>
  <span>2</span>
</div>

答案 1 :(得分:0)

要在Javascript中将字符串转换为Int,请使用:

parseInt函数(totaalPersonen);

答案 2 :(得分:0)

您正在每个循环中重新var totaalPersonen = totaalPersonen + i;。 因此,您需要在循环外部初始化totaalPersonen,例如此var totaalPersonen = 0;,并在循环内部将其计算为totaalPersonen = totaalPersonen + 1;或仅totaalPerseonen++;

答案 3 :(得分:0)

试试这个 假设您要在我使用innerHTML而不是i的跨度内添加文本。 此外,totaalPersonen变量应在for循环之外声明,否则每次都会重新初始化。

var div = document.getElementById("aantallen");
var spans = div.getElementsByTagName("span");
console.log(spans);
var totaalPersonen = 0;
for(i=0;i<spans.length;i++)
{
    alert(parseInt(spans[i].innerHTML));
    totaalPersonen = parseInt(totaalPersonen) + parseInt(spans[i].innerHTML);
    //alert(totaalPersonen);
}
alert(totaalPersonen);