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

[Dúvida] erro controle.forEach is not a function

meu codigo js

const subtrair = document.querySelector ("#subtrair")
const somar = document.querySelector ("#somar")
const braco = document.querySelector ("#braco")
const controle = document.querySelector (".controle-ajuste")

controle.forEach ((elemento) => { 
    elemento.addEventListener ("click", () => {
        console.log (evento.target)
        function manipulaDados (operacao) {
    if (operacao === "-") {
        braco.value = parseInt (braco.value) - 1
    } else {
        braco.value = parseInt (braco.value) + 1
    })
})

quando abro no chome aparece o erro "controle.forEach is not a function"

2 respostas

Oi, Esthevan

O forEach é para ser usado em um array

Você tem que usar querySelectorAll


const controle = document.querySelectorAll(".controle-ajuste")
solução!

Oi Esthevan, tudo certo?

Assim como o Luis Dias comentou acima, você precisa fazer o forEach em um array, criando seu controle com const controle = document.querySelectorAll(".controle-ajuste").

Além disso, está faltando fazer o fechamento do else e o fechamento da function. Para isso, você precisa adicionar duas chaves } depois de braco.value = parseInt (braco.value) + 1. Vai ficar assim:

const subtrair = document.querySelector ("#subtrair")
const somar = document.querySelector ("#somar")
const braco = document.querySelector ("#braco")
const controle = document.querySelectorAll(".controle-ajuste")

controle.forEach ((elemento) => { 
    elemento.addEventListener ("click", () => {
        console.log (evento.target)
        function manipulaDados(operacao) {
            if (operacao === "-") {
                braco.value = parseInt (braco.value) - 1
            } else {
                braco.value = parseInt (braco.value) + 1
            }
        }
    })

})

Também é bacana se atentar de que você está criando a função ao clicar no elemento. Não sei se era essa a intenção, mas se quiser fazer a chamada da função ao clicar no elemento, você pode criar ela fora desse forEach e dentro dele apenas fazer a chamada da função, usando manipulaDados(evento.target.textContent).

Espero ter solucionado sua questão.

Se ainda tiver alguma dúvida, me coloco à disposição!

Um abraço e bons estudos!

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