1
resposta

erro na sintaxe do forEach

Na verdade, existem 3 problemas que encontrei, e apenas 1 eu consegui resolver.

Quando terminei o curso, fiquei quebrando a cabeça para entender porque meu código estava dando errado. Comparei lado a lado o meu código com o gabarito, e estava tudo igualzinho, cheguei até a copiar e colar, e mesmo assim não estava dando certo. Precisei conversar por mais de uma hora com o chatGPT sobre alguns aspectos mais gerias ou mais específicos para chegar no erro, que era um erro na sintaxe do controle.forrEach

A função atualizaEstatistica(evento.target.dataset.controle) era o que estava dando erro, ele não conseguia definir um valor para o item "forca" graças a isso, o que caracterizava um erro na linha 55, que era o conteúdo da função atualizaEstatistica:

elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica]

Eu estava achando que o erro estava aqui, mas na verdade o problema era com o forEach, que puxa essa função mas que, devido ao erro de sintaxe, não conseguia realizar o processo da maneira correta. Fiz então uma alteração no argumento da função atualizaEstatistica, e ficou assim:

controle.forEach((elemento) => { elemento.addEventListener('click', (evento) => { manipulaDados(evento.target.textContent, evento.target.parentNode); atualizaEstatistica(evento.target.dataset.peca); }); });

ao invés de atualizaEstatistica(evento.target.dataset.controle); substituí a última palavra por "peca" e aí o meu código funcionou.

Entretanto, cheguei ao segundo erro, e esse não consegui resolver. quando clico no + para aumentar a quantidade de braços, blindagem, etc, ele aumenta normalmente; porém, quando tento diminuir apertando -, ele simplesmente continua somando. até tentei fazer uma alteração sugeriada pelo GPT colocando um (operacao === "+") depois do else, mas não fez diferença alguma. Segue o trecho de código com esa função:

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

}

E, por último, percebi que no HTML temos um typo na palavra "buttom", até tentei ajustar esse erro no meu código fazer a alteração para button, mas isso só piorou a situação, então acabei deixando quieto.

Se puderem me dar uma luz com relação a como resolver esses problemas, eu agradeço! :D Segue meu código no GitHub: https://github.com/ArthurRodrigoM/Alura-Robotron-2000

1 resposta

Obrigado por fornecer detalhes tão completos do seu problema. Com base nas informações que você forneceu, aqui estão algumas possíveis soluções para os problemas que você está enfrentando:

  1. Erro no método forEach: Seu código agora parece estar correto com atualizaEstatistica(evento.target.dataset.peca);. Isso deve funcionar se o atributo data-peca estiver definido corretamente em seu HTML.
  2. Problema com a operação de decremento: Em seu código, você está verificando se a operação é "-" e, em caso afirmativo, decrementa o valor. Caso contrário, você incrementa o valor. Isso significa que qualquer valor que não seja exatamente "-" será tratado como uma operação de incremento. Verifique se o valor de operacao está realmente sendo definido como "-" quando o botão de decremento é clicado. Você pode fazer isso adicionando um console.log(operacao); antes da sua instrução if para ver o valor de operacao no console do navegador.
  3. Problema com 'buttom': O correto na linguagem HTML é 'button'. Se alterar 'buttom' para 'button' está causando problemas, é provável que haja algum código em algum lugar que está esperando 'buttom'. Verifique se há algum código JavaScript ou CSS que está usando o seletor 'buttom'. No entanto, essa mudança não deve afetar a lógica principal do seu código JavaScript.

Lembre-se que ao alterar o nome de uma tag no HTML, você deve procurar por todos os lugares onde essa tag está sendo usada no CSS e no JavaScript para garantir que todos os nomes foram alterados.

Espero que essas sugestões ajudem você a resolver seus problemas. Lembre-se de que a depuração é uma habilidade importante em programação e leva tempo e prática para se tornar bom nisso. Continue tentando e você definitivamente chegará lá!