2
respostas

Como somar os dois valores da coluna? Só me traz o valor 32.00 no resultado?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <link rel="stylesheet" href="../css/reset.css">
    <link rel="stylesheet" href="../css/index.css">
</head>
<body>
    <main>
        <section class="container">
    <table>
        <thead>
            <tr>
                <th>Descrição</th>
                <th>valor</th>
            </tr>
        </thead>
        <tbody id="produtos">
            <tr class="caixa">
                <td>Monitor LCD</td>
                <td class="info-valor">150.00</td>
            </tr>
            <tr class="caixa">
                <td>Teclado</td>
                <td class="info-valor">32.00</td>
            </tr>
        </tbody>
        <tfoot>
            <tr class="total">
                <th>Total</th>
                <th class="info-total">0</th>
            </tr>
        </tfoot>
    </table>
        </section>
    </main>

    <script>
        var listTr = document.querySelectorAll('.caixa')
        console.log(listTr);

        for (i = 0; i < listTr.length; i++) {
            list = listTr[i];

            console.log(list);

            var tdValor = list.querySelector('.info-valor')
            var valor = tdValor.textContent

            var resultado = document.querySelector('.info-total')

            var total = valor

            resultado.textContent = total

            console.log(total);

        }

    </script>
</body>
</html>
2 respostas

Bom dia Stefano.

Seu código está com algumas situações que estão te atrapalhando, como a definição do total dentro do for.

O jeito de se fazer isso de forma que menos altere seu código seria conforma abaixo..

    <script>
        var listTr = document.querySelectorAll('.caixa')
        var total = 0;

        for (i = 0; i < listTr.length; i++) {

            list = listTr[i];

            var tdValor = list.querySelector('.info-valor')
            total += parseFloat(tdValor.textContent)


        }

        var resultado = document.querySelector('.info-total')

        resultado.textContent = total;

        console.log(total);


    </script>

Oi, Stefano, tudo bem?

A resposta do Brian tá quase lá. Mas ela só consegue pegar o primeiro valor. Então, para podermos somar todos os valores da classe info-valor, segue:

    var listTr = document.querySelectorAll('.caixa');
    var total = 0;

        for (i = 0; i < listTr.length; i++) {
            var list = listTr[i];

            var tdValor = list.querySelectorAll('.info-valor');
            var resultado = list.querySelector('.info-total');

        for (let i = 0; i < tdValor.length; i++) {
            var valor = parseFloat(tdValor[i].textContent);

            total = total + valor;
            resultado.textContent = total;

            console.log(total);
        }
  }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software