1
resposta

[Bug] Estatísticas apenas somam mas não subtraem. (RESOLVIDO)

Se mais alguém estiver com o problema de que as estatísticas apenas somam mas não subtraem ao apertar os botões correspondentes, tentem este código aqui:

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.dataset.controle, evento.target.parentNode);
    atualizaEstatistica(evento.target.dataset.peca, evento.target.dataset.controle);
  })
})

function manipulaDados(operacao, controle) {
  const peca = controle.querySelector("[data-contador]");

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

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

Oi Laura, tudo bem?

Muito obrigada por compartilhar com a gente o seu código, com certeza vai ajudar outras pessoas estudantes!

Parabéns pela atitude.

Um abraço e bons estudos.