Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uncaught TypeError: controle.forEach is not a function at main.js:37:10

Oii pessoal, boa noite!

Os botões para adicionar equipamentos não funcionam quando aperto em + e - e no console aparece o erro: Uncaught TypeError: controle.forEach is not a function at main.js:37:10.

Fucei muito mas não consigo entender aonde estou errando...alguém pode me ajudar por favor?

const controle = document.querySelector("[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.textContent, evento.target.parentNode);
        atualizaEstatistica(evento.target.dataset.peca);
    });
});

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

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

function atualizaEstatistica(peca) {
    estatistica.forEach( (elemento) => {
        elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica]
    })
}
1 resposta
solução!

Olá, Amanda!

Para usar o método foreach, o seu objeto precisa ser do tipo lista.

Acho que esse erro está ocorrendo porquê você está usado o método querySelector da Classe document. Este método não te retorna uma lista.

Em vez disso, você deve usar o método querySelectorAll() , e aí você poderá iterar sobre a lista resultante.

Ficaria assim:

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

Espero ter ajudado!

Boa sorte em seus 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