1
resposta

As estatisticas estao ficando NaN quando sao somadas

Bom, aparentemente os dados estao corretos, entretanto sempre que faz a soma as estatisticas ficam como NaN

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 contador = controle.querySelector("[data-contador]");

    if(operacao === "-"){
        contador.value = parseInt(contador.value) - 1;
    }else{
        contador.value = parseInt(contador.value) + 1;
    }
}

function atualizaEstatisticas(peca, operacao) {
    if(operacao === "+") {
        estatisticas.forEach( (elemento) => {
          elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatisticas];
        })
      } else {
        estatisticas.forEach( (elemento) => {
          elemento.textContent = parseInt(elemento.textContent) - pecas[peca][elemento.dataset.estatisticas];
        })
      }
}
1 resposta

Opa Gustavo, tudo bom?

Peço desculpa pela demora em obter um retorno.

O erro de NaN ocorre, pois na função atualizaEstatisticas, buscamos estatistica no plural invés do singular, retirando o s nosso código vai conseguir identificar o elemento corretamente:

+ pecas[peca][elemento.dataset.estatisticas];

- pecas[peca][elemento.dataset.estatisticas]; 

Se tiver alguma dúvida não hesite em postar no fórum, conte conosco!

Desejo um bom dia e bons estudos.

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