Tengo una tabla HTML a la que quiero agregar un total de la columna de precios.
He hecho esto con javascript, sin embargo, tengo un problema en el que no agrega el valor después de un punto decimal, por ejemplo, 5.50
aquí está mi código js
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;Su secuencia de comandos puede beneficiarse de un mapa y una reducción con conversión a número en lugar del parseInt que tiene, que eliminará todos los decimales
Uso el unario más aquí en lugar de parseInt/Float
let sum = 0; const prices = [...document.querySelectorAll('#quote .tprice')] .map(td => isNaN(td.textContent) ? 0 : +td.textContent); // an array of numbers if (prices.length) sum = prices.reduce((a, b) => a + b); // reduced to a sum 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>Quizás intente cambiar esta línea:
sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);a
var value = parseFloat(tds[i].innerHTML); sum += isNaN(value) ? 0 : value;pero mejor muestre un ejemplo de tabla HTML con datos de muestra (¡NO DE PRODUCCIÓN!)