1
resposta

Estatísticas não mudam

Não sei onde está o erro, mas não consigo mudar as estatícas quando coloca mais peças no robo.

código js

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.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 atualizaEstatisticas(peca){

    estatisticas.forEach ( (elemento) => {
        
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica]
    })

}
1 resposta

Parece que o problema está no seletor utilizado para encontrar os elementos com atributo data-estatistica na linha 2 do seu código JavaScript. Atualmente, o seletor está incompleto e precisa ser corrigido para funcionar corretamente.

Você precisa adicionar o caractere [] para selecionar elementos com atributo específico. Altere a linha 2 do seu código para o seguinte:

const estatisticas = document.querySelectorAll("[data-estatistica]")

Isso permitirá que o seletor encontre corretamente todos os elementos com o atributo data-estatistica e execute a função atualizaEstatisticas adequadamente, atualizando as estatísticas quando mais peças são adicionadas ao robô.

Após fazer essa correção, teste novamente o seu código e verifique se as estatísticas estão sendo atualizadas corretamente. Se você ainda enfrentar problemas, verifique se há outros erros ou inconsistências no seu código.