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 над элементом и слепо полагая, что это число. Это может быть так, или это может быть что-то другое.

Вернуться на верх