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