1
resposta

Meu código não esta funcionando a alteração de estatísticas

Eu fiz o codigo acompanhado o video, porem a alteração de estatitsticas não esta funcionando. esta ocorrendo o erro, suspeito que o erro possa estar no HTML, porem não fui capaz de identificar:

const controle = document.querySelectorAll("[data-controle]")
const estatisticas = 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.dataset.controle, evento.target.parentNode)
        atualizaEstatisticas(evento.target.dataset.pecas)
    })
})

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 atualizaEstatisticas(peca) {
    estatisticas.forEach( (elemento ) => {
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica];

    })
}
1 resposta

Olá Manoela, tudo bem?

Olhando seu código percebi um detalhe que precisa ser corrigido. No forEach quando chama a função atualizaEstatisticas, você passou os atributos: evento.target.dataset.pecas porem pecas aqui é no singular, sem a letra "s" no final, ou seja: evento.target.dataset.peca, corrigido fica:

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

Espero ter ajudado e bons estudos!