Вопрос:

Сумма значений диапазона в цикле For (работает в IE10)

javascript for-loop sum internet-explorer-10

52 просмотра

2 ответа

106 Репутация автора

У меня есть следующие значения в тегах 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);

Как я могу преобразовать значения диапазона в целые числа и составить их сумму?

Автор: Kevin Verhoeven Источник Размещён: 28.12.2017 07:28

Ответы (2)


1 плюс

6159 Репутация автора

Решение

Вы получаете прямой доступ к диапазонам и пытаетесь их добавить; вместо этого вы должны получить доступ к контенту в пределах диапазона.

Проверьте следующий фрагмент:

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>

Автор: Geeky Размещён: 28.12.2017 07:33

2 плюса

2501 Репутация автора

Вы получаете объект правильно, но не обращаетесь к его значению должным образом, вам нужно использовать innerHTML в каждом элементе, чтобы получить его.

Вы используете: (это объект узла DOM)

spans[i]

Вам нужно использовать: (соответствующее значение innerHTML узла DOM )

spans[i].innerHTML

Я построил функциональный jsfiddle, посмотрите:

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

Автор: RPichioli Размещён: 28.12.2017 07:40
Вопросы из категории :
32x32