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

Total retornando zero

<!DOCTYPE html>
<html>
    <head>
        <title>Calcular idade</title>
        <meta charset="utf-8">
    </head>
    <body>
        <ul>
            <li class="convidado">
                Nome <span class="nome">Douglas</span>,
                idade <span class="idade">23</span>
            </li>
            <li class="convidado">
                Nome <span class="nome">Daniel</span>,
                idade <span class="idade">42</span>
            </li>
            <li class="convidado">
                Nome <span class="nome">Marcos</span>,
                idade <span class="idade">27</span>
            </li>
            <li class="convidado">
                Nome <span class="nome">Flávio</span>,
                idade <span class="idade">18</span>
            </li>

            Total das idades: <span class="total"></span>
        </ul>
    </body>
    <script>
            function criaListaDeConvidados() {
                var itens = document.querySelector(".convidado");

                var convidados = [];

                for(var i = 0; i < itens.length; i++) {
                    var convidado = {
                        nome: itens[i].querySelector(".nome").textContent,
                        idade: parseInt(itens[i].querySelector(".idade").textContent)
                    };

                    convidados.push(convidado);
                }

                return convidados;
            }

            function calculaTotalDasIdades(convidados) {
                var total = 0;

                for(var i = 0; i < convidados.length; i++) {
                    total += convidados[i].idade;
                }

                return total;
            }

            function exibeTotalDasIdades(total) {
                document.querySelector(".total").textContent = total;
            }

            var convidados = criaListaDeConvidados();
            var totalDasIdades = calculaTotalDasIdades(convidados);
            exibeTotalDasIdades(totalDasIdades);

        </script>
</html>

Usando o código do instrutor o meu valor total tá retornando zero. O que poderia fazer para solucionar esse erro?

2 respostas
solução!

Boa noite Edilson, encontrei o problema, na função criaListaDeConvidados(), você está utilizando método "querySelector()" para pegar os elementos, porém, quando você utiliza essa método para buscar os elementos de uma classe, ele pegará apenas o primeiro elemento. Agora, se você utilizar o método "querySelectorAll()" ele pegará todos os elementos daquela classe. Veja a correção abaixo:

//Troque essa linha
var itens = document.querySelector(".convidado");
//Por essa
var itens = document.querySelectorAll(".convidado");

Faça esse procedimento e teste o seu código agora. Espero tê-lo ajudado, tenha uma boa noite :)

Obrigado, esqueci de pôr o querySelectorAll.