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

meu codigo atualiza os botoes mas nao atualiza estatisticas

utilizei do console log para descobrir e o resultado foi "peca is not defined"

5 respostas

Olá Marcio, tudo bem?

Pelo que entendi, você está enfrentando um problema ao atualizar os botões em seu código JavaScript, mas as estatísticas não estão sendo atualizadas. Além disso, você recebeu uma mensagem de erro "peca is not defined" ao utilizar o console log.

Pelo erro apresentado, parece que você está tentando utilizar uma variável chamada "peca" que não foi definida em seu código. Verifique se essa variável foi declarada corretamente e se está sendo utilizada no lugar correto.

Quanto à atualização dos botões e das estatísticas, é importante verificar se você está utilizando os métodos corretos para atualizar cada um deles. Certifique-se de que está chamando os métodos corretos e passando os parâmetros necessários para que as atualizações sejam feitas corretamente.

Caso ainda esteja enfrentando dificuldades, sugiro que compartilhe seu código no GitHub para que possamos avaliar melhor e ajudá-lo de forma mais precisa.

Espero ter ajudado e bons estudos!

--revisei mas nao encontro onde errei

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(peça) {
    estatisticas.forEach( (elemento) => {
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca] [elemento.dataset.estatistica]
        console.log()
    })
}
solução!

Olá Marcio, tudo bem contigo?

Olha, na verdade, o problema é algo bem pequeno, que eu imagino o porquê você não conseguiu achar ele com facilidade. Mas o que aconteceu ali foi simplesmente um "Ç" no lugar de um "C".

Nessa parte do código aqui:

function atualizaEstatisticas(peça) {
    estatisticas.forEach( (elemento) => {
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca] [elemento.dataset.estatistica]
        console.log()
    })
}

Para resolver isso você só precisa mudar o "peça" que está no começo da função por "peca", ou o contrário, trocar o "peca" que está aqui pecas[peca] [elemento.dataset.estatistica] por pecas[peça] [elemento.dataset.estatistica] e ambas as formas vão funcionar.

Em suma deixo o código completo corrigido, indentado e organizado abaixo:

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];
  });
}

Em suma era isso, espero ter ajudado, caso precise eu estarei por aqui!

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓

caraca, revisei tantas vezes e nao vi que era o Ç, obg de qualquer forma viu

Olá Marcio, tudo bem contigo?

Eu fico feliz em ter ajudado!

Não se preocupe com isso, pois essa sua situação é super normal, eu mesmo já passei muito por isso tá.

E caso você precise não se esqueça de contar com o fórum, pois eu e todos os outros Scubas estaremos prontos aqui para poder lhe ajudar caso precise.

Era isso, abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software