Javascript передает только первое значение из цикла for
Я пытаюсь суммировать значения в цикле for из моей базы данных django. Всякий раз, когда я передаю цикл через javascript, он возвращает только первое значение в массиве. Я хотел бы узнать, может ли кто-нибудь помочь мне выяснить, как получить все значения в цикле для передачи через скрипт.
{% for loans in d1_companies %}
<div id="security-value">{{loans.market_value}}</div>
{% endfor %}
<div id="test"></div>
<script>
for(let i = 0; i < 1000; i++) {
let sum = document.querySelectorAll(`[id^="test"]`)[i];
let values = [document.getElementById("security-value").innerText];
const summed_value = values.reduce((accumulator, currentValue) => accumulator + currentValue);
sum.innerText = summed_value;
}
</script>
Я не уверен, почему вы выполняете цикл 1000 раз. Вы можете взять все экземпляры security-value
(которые я заменил на классы, поскольку, как упомянул @Pointy, идентификаторы должны быть уникальными) и просмотреть их в цикле.
{% for loans in d1_companies %}
<div class="security-value">{{loans.market_value}}</div>
{& endfor %}
div id="test"></div>
<script>
const security_values = Array.from(document.querySelectorAll('.security-value'));
const security_values_inner = security_values.map((element) => element.innerText);
const summed_values = security_values_inner.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
const sum = document.getElementById('test');
sum.innerText = summed_values;
</script>
В качестве дополнения, будьте осторожны, уменьшая innerText
над элементом и слепо полагая, что это число. Это может быть так, или это может быть что-то другое.