4
respostas

Problemas com o código

Fiz a aula e acompanhei passo a passo com o professor, o código está idêntico mas o meu não está funcionando como esperado. Obs: Conforme mostrado na imagem, está mostrando um erro "controle.forEach is not a function". Segue imagens do navegador e do código:

HTML: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

JS: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Navegador: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Bom dia Giulio! Talvez o problema seja o uso do document.querySelector na váriavel "controle" ao invés do document.querySelectorAll. Acontece que o querySelectorAll retorna uma nodeList (uma array), portanto, possibilitando o uso do forEach.

Boa tarde Gustavo! Tentei usar o querySelectorAll e agora os números mudam mas atualiza a página e volta para 0 novamente, sem contar que os ícones de "-" (menos) e "+" (mais) estão maiores e não estão centralizados. Segue a imagem do navegador:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Então, provavelmente o caso dos números voltarem a 0 depois de atualizar a página seja porque eles não estão salvos no navegador em si ou em um servidor externo, uma forma de resolver isso seria armazená-los no localStorage, se não me engano o instrutor utiliza esse método neste curso. Sobre os ícones descentralizados não tenho certeza, mas pode ser a resolução da tela, por ser maior ou menor eles não ficam exatamente onde deveriam. De qualquer forma, penso que esses sejam os motivos, espero ter ajudado!

Olá Giulio, como vai?

Tive o mesmo problema que você

A questão dos sinais de "+" e "-" estourarem é pq voce está utilizando corretamente a tag "button", no html passado em aula está como "buttom", neste caso lembre-se de colocar type="button" para não ficar atualizando a página.

<button type="button" class="controle-ajuste" data-controle="-">-</button>

E segue código js abaixo, espero que você possa identificar seu erro.

const controle = document.querySelectorAll("[data-controle]");

controle.forEach((elemento) => {
  elemento.addEventListener("click", (evento) => {
    manipulaDados(evento.target.dataset.controle, evento.target.parentNode);
  });
});

console.log(controle)

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