У меня есть таблица HTML, которую я хочу добавить в столбец цены.

Я сделал это с помощью javascript, однако у меня возникла проблема, когда он не добавляет значение после десятичной точки, например. 5,50

Вот мой код js

<script language="javascript" type="text/javascript">
        var tds = document.getElementById('quote').getElementsByClassName('tprice');
        var sum = 0;
        for(var i = 0; i < tds.length; i ++) {
                sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);
        }

        var total = sum.toFixed(2);

        document.getElementById('totalprice').innerHTML += "£" + total;
    </script>
-1
Tom Peet 26 Янв 2022 в 18:21
4
parseInt означает "целочисленный разбор". Вы, вероятно, хотите parseFloat.
 – 
Heretic Monkey
26 Янв 2022 в 18:24

2 ответа

Может быть, попробуйте изменить эту строку:

sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);

К

var value = parseFloat(tds[i].innerHTML);
sum += isNaN(value) ? 0 : value;

Но лучше покажите пример HTML-таблицы с примерами (НЕ ПРОИЗВОДСТВЕННЫМИ!) данными

1
zbyso 26 Янв 2022 в 18:27

Ваш скрипт может извлечь выгоду из карты и сокращения с приведением к числу, а не к parseInt

let sum = 0;
const prices = [...document.querySelectorAll('#quote .tprice')]
  .map(td => isNaN(td.textContent) ? 0 : +td.textContent)
if (prices.length) sum = prices.reduce((a, b) => a + b);
document.getElementById('totalprice').innerHTML += "£" + sum.toFixed(2);
<table id="quote">
  <tr>
    <td class="tprice">15.50</td>
  </tr>
  <tr>
    <td class="tprice">16.50</td>
  </tr>
  <tr>
    <td class="tprice">17.50</td>
  </tr>
  <tr>
    <td class="tprice">18.50</td>
  </tr>
</table>
<span id="totalprice"></span>
1
mplungjan 26 Янв 2022 в 18:34