Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Como somar os valores de colunas com a mesma classe??

var contas = document.querySelectorAll(".conta"); //selecionando todas as tr com All // console.log(contas);

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

var conta = contas[i];

var valorTd = conta.querySelector(".info-valor"); // selecionando a coluna

var valor = valorTd.textContent; // pegando o conteudo da data // console.log(valor); //pegando conteudo do valor de todas as linhas

valor receber o proximo valor ta tr seguinte e somar todos os valores assim como o excel faz para somar valores de uma mesma coluna

}

9 respostas

como o excel faz para somar dados de uma mesma coluna

Oi José, você pode usar uma variável auxiliar para ir acumulando os valores das colunas.

mas como posso acumular esses valores?? eles estao com o mesmo nome da classe

10/08/2017Fatura da Tim39.90 10/07/2017Fatura da Tim60.90 10/07/2017Fatura da Tim39.90
<tr class="conta" >

                <td class="info-data">10/08/2017</td>
                <td class="info-conta">Fatura da Tim</td>
                <td class="info-valor">39.90</td>
            </tr>

            <tr class="conta">

                <td class="info-data">10/07/2017</td>
                <td class="info-conta">Fatura da Tim</td>
                <td class="info-valor">60.90</td>
            </tr>

            <tr class="conta">

                <td class="info-data">10/07/2017</td>
                <td class="info-conta">Fatura da Tim</td>
                <td class="info-valor">39.90</td>
            </tr>

você pode usar a class info-valor para selecionar todas as tds.. aí é só pegar o conteúdo de cada uma e somar.

selecionar todas eu to conseguindo o problema é como somar o conteudo delas que nao sei como fazer

solução!

Boa noite, segue:

<table>
    <tr class="conta">
        <td class="info-data">10/08/2017</td>
        <td class="info-conta">Fatura da Tim</td>
        <td class="info-valor">39.90</td>
    </tr>

    <tr class="conta">
        <td class="info-data">10/07/2017</td>
        <td class="info-conta">Fatura da Tim</td>
        <td class="info-valor">60.90</td>
    </tr>

    <tr class="conta">
        <td class="info-data">10/07/2017</td>
        <td class="info-conta">Fatura da Tim</td>
        <td class="info-valor">39.90</td>
    </tr>
</table>

<script>

    // Atribui à tdsValores uma lista com os elementos tds    
    //que possuem a classe info-valor
    let tdsValores = document.querySelectorAll('.info-valor')

    let total = 0 // Variável auxiliar

    // Itera sobre a lista de elementos tds (tdsValores)
    for (let i = 0; i < tdsValores.length; i++) {

        // Você acessa o texto dentro de um elemento
        // por meio da propriedade textContent
        // a função parseFloat converte um texto pra número de ponto flutuante
        // caso contrário ao somar os valores na verdade você os concatenaria, 
        // obtendo "39.9060.9039.90"
        let valor = parseFloat(tdsValores[i].textContent)

        // a cada iteração total vai receber o valor dela mesma
        // mais o valor atual da iteração
        total = total + valor // ou total += valor
    }

    console.log(total) // imprime no console o valor final de total
</script>

No Excel, você pode utilizar a função SOMA, ela pode receber vários argumentos como valores simples, ex.:

SOMA(1;2;3) // 6

Também pode receber como argumentos referências a células que contenham valores numéricos:

SOMA(A1;A2;A3;A4;A5)

No caso de vários argumentos, você pode passar até 255 argumentos, segundo a documentação da Microsoft

Ou também pode passar pra função um intervalo de células:

=SOMA(A1:A1048576)

Um intervalo de células é um array. Nossa lista de elementos td é tipo um array, isto significa que você também pode implementar a função SOMA no javascript, recebendo como parâmetro um array e te retornando o total. É bem provável que a função SOMA do Excel funcione de maneira parecida.

A propósito, você também poderia implementar sua própria função SOMA pro Excel utilizando VBA.

E sim, o Alura possui um curso de VBA.

muito obrigado