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

Sem resultados

queria pedir uma ajuda para identificar onde está o erro do meu código (mesmo copiando o código do repositório do instrutor), pois não tem jeito de aparecer os valores. Ele dá numero e ao clicar no último item, no foguete, ele da uma mensagem de erro.`

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

HTML [código omitido]

    <section class="box estatisticas">
        <div class="estatistica">
            <p class="estatistica-titulo">Força</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>768</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Poder</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>630</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Energia</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>289</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Velocidade</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>597</p>
            </div>
        </div>
    </section>

    <section class="equipamentos">
        <form action="" class="montador">
            <div class="box montador-conteudo">
                <div class="peca">
                    <label for="" class="peca-titulo">Braços</label>
                    <div class="controle">
                        <buttom class="controle-ajuste" data-controle="-" data-peca="bracos">-</buttom>
                        <input type="text" class="controle-contador" value="00" data-contador>
                        <buttom class="controle-ajuste" data-controle="+" data-peca="bracos">+</buttom>
                    </div>
                </div>
                <hr class="linha">
                <div class="peca">
                    <label for="" class="peca-titulo">Blindagem</label>
                    <div class="controle">
                        <buttom class="controle-ajuste" data-controle="-" data-peca="blindagem">-</buttom>
                        <input type="text" class="controle-contador" value="00" data-contador>
                        <buttom class="controle-ajuste" data-controle="+" data-peca="blindagem">+</buttom>
                    </div>
                </div>
                <hr class="linha">
                <div class="peca">
                    <label for="" class="peca-titulo">Núcleos</label>
                    <div class="controle">
                        <buttom class="controle-ajuste" data-controle="-" data-peca="nucleos">-</buttom>
                        <input type="text" class="controle-contador" value="00" data-contador>
                        <buttom class="controle-ajuste" data-controle="+" data-peca="nucleos">+</buttom>
                    </div>
                </div>
                <hr class="linha">
                <div class="peca">
                    <label for="" class="peca-titulo">Pernas</label>
                    <div class="controle">
                        <buttom class="controle-ajuste" data-controle="-" data-peca="pernas">-</buttom>
                        <input type="text" class="controle-contador" value="00" data-contador>
                        <buttom class="controle-ajuste" data-controle="+" data-peca="pernas">+</buttom>
                    </div>
                </div>
                <hr class="linha">
                <div class="peca">
                    <label for="" class="peca-titulo">Foguetes</label>
                    <div class="controle">
                        <buttom class="controle-ajuste" data-controle="-" data-peca="forguete">-</buttom>
                        <input type="text" class="controle-contador" value="00" data-contador>
                        <buttom class="controle-ajuste" data-controle="+" data-peca="forguete">+</buttom>

     [código omitido]
const controle = document.querySelectorAll("[data-controle]")
const estatistica = document.querySelectorAll("[data-estatistica]")

const pecas = {
    "bracos": {
        "forca": 29,
        "poder": 35,
        "energia": -21,
        "velocidade": -5
    },

    "blindagem": {
        "forca": 41,
        "poder": 20,
        "energia": 0,
        "velocidade": -20
    },
    "nucleos":{
        "forca": 0,
        "poder": 7,
        "energia": 48,
        "velocidade": -24
    },
    "pernas":{
        "forca": 27,
        "poder": 21,
        "energia": -32,
        "velocidade": 42
    },
    "foguetes":{
        "forca": 0,
        "poder": 28,
        "energia": 0,
        "velocidade": -2
    }
}

controle.forEach( (elemento) => {
    elemento.addEventListener("click" , (evento) => {
        manipulaDados(evento.target.textContent, evento.target.parentNode)
        atualizaEstatistica(evento.target.dataset.peca)
    })
})

function manipulaDados(operacao, controle) {
    const peca = controle.querySelector("[data-contador]") 
    if(operacao === "-") {
        peca.value = parseInt(peca.value) -1 
    } else {
        peca.value = parseInt(peca.value) +1   
    }
}

function atualizaEstatistica(peca) {
    console.log("peca", pecas[peca])
    estatistica.forEach( (elemento) => {
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica]
    })
}
solução!

Oi, Daniele, tudo bem?

Desculpa a demora em te responder!

O problema que você está enfrentando ocorre por conta do data atribute data-estatistica adicionado a cada uma das estatísticas na seção que mostro abaixo do código HTML:

 <section class="box estatisticas">
        <div class="estatistica">
            <p class="estatistica-titulo">Força</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>768</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Poder</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>630</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Energia</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>289</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Velocidade</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica>597</p>
            </div>
        </div>
    </section>

Como não foram atribuídos nenhum valor a esses data-estatistica o resultado será "not a number" (NaN). Podemos resolver esse problema atribuindo os valores para cada data-estatistica. O código corrigido ficaria assim:

 <section class="box estatisticas">
        <div class="estatistica">
            <p class="estatistica-titulo">Força</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica="forca">768</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Poder</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica="poder">630</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Energia</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica="energia">289</p>
            </div>
        </div>
        <div class="estatistica">
            <p class="estatistica-titulo">Velocidade</p>
            <div class="estatistica-valor">
                <p class="estatistica-numero" data-estatistica="velocidade">597</p>
            </div>
        </div>
    </section>

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

muito obrigada pela ajuda, Rodrigo. Agora deu certo mesmo. :)