For循环中的跨度值总和(在IE10中工作)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了For循环中的跨度值总和(在IE10中工作)相关的知识,希望对你有一定的参考价值。

我在span标签中有以下值:

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

在JS中我想得到这些值的总和。我有这个代码来做(有效,但是):

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

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

但是,此代码在Internet Explorer 10(可能不是旧版本)中不起作用,因为不支持ECMA 6箭头。

现在我正在尝试编写一些也可以在IE中运行但我还没有完成它的东西。我有一个版本,我可以在跨度中使用文本,但我不能让它转换为整数,因为我得到NaN错误:

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]));
    totaalPersonen = parseInt(totaalPersonen) +parseInt(spans[i]);
    //alert(totaalPersonen);
}
alert(totaalPersonen);

问题:如何将跨度值转换为整数并将它们相加?

感谢您的帮助或见解!

答案

您正在直接访问跨度并尝试添加它们,而您必须访问跨度内的内容

检查以下代码段

var div = document.getElementById("aantallen");
var spans = div.querySelectorAll("span");

var totaalPersonen = 0;
for(i=0;i<spans.length;i++)
{
   const content = Number(spans[i].innerhtml)
    alert(content);
    totaalPersonen = Number(totaalPersonen) +content;
    alert(totaalPersonen);
}
<div id="aantallen">
 <span>3</span>
 <span>2</span>
</div>
另一答案

您正确获取对象但没有正确访问它的值,您需要在每个元素中使用innerHTML来获取它。

您正在使用:(它是DOM节点对象)

spans[i]

你需要使用:(相应的DOM节点innerHTML值)

spans[i].innerHTML

我已经建立了一个功能性的jsfiddle,看看:

https://jsfiddle.net/rpichioli/w3m0cc1g/

以上是关于For循环中的跨度值总和(在IE10中工作)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt GUI 应用程序中工作循环并显示 qimage

为啥显示:-ms-flex; -ms-justify-content:中心;不能在 IE10 中工作? [关闭]

如何在 for 循环中并行处理。我的代码不正确地并行操作

向左飘浮;不在IE中工作?

如何使用类获取跨度内的文本。 (for循环内部)

如何让 View.invalidate 在 Click Listener 中工作