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

[Dúvida] Erro no códico

meu código está apresentando esse erro e não estou conseguindo resolver, se alguem poder ajudar fico grato.

Uncaught TypeError: itens.forEach is not a function
    at main.js:9:7


const form = document.getElementById("novoItem");
const lista = document.getElementById("lista");
const itens = localStorage.getItem("itens") || []


itens.forEach( (elemento) => {
    criaElemento(elemento)
})


form.addEventListener("submit", (evento) => {
    evento.preventDefault()


    const nome = evento.target.elements['nome']
    const quantidade = evento.target.elements['quantidade']

    const itemAtual = {
        "nome": nome.value,
        "quantidade": quantidade.value
    }


    criaElemento(itemAtual);

    itens.push(itemAtual)


    localStorage.setItem("itens",JSON.stringify(itens))

    nome.value = ""
    quantidade.value = ""
});



function criaElemento(item) {

    const novoItem = document.createElement('li')
    novoItem.classList.add("item")

    const numeroItem = document.createElement('strong')
    numeroItem.innerHTML = item.quantidade

    novoItem.appendChild(numeroItem)
    novoItem.innerHTML += item.nome

    lista.appendChild(novoItem)

}
3 respostas
solução!

Olá Anderson!

O erro "Uncaught TypeError: itens.forEach is not a function" indica que a variável "itens" não é uma array, mas sim uma string. Isso ocorre porque o método "localStorage.getItem()" retorna uma string, mesmo que o valor armazenado seja uma array.

Para corrigir esse erro, você pode utilizar o método "JSON.parse()" para converter a string em uma array. Basta adicionar a seguinte linha de código logo após a declaração da variável "itens":

itens = JSON.parse(itens);

Assim, o seu código ficará da seguinte forma:

const form = document.getElementById("novoItem");
const lista = document.getElementById("lista");
let itens = localStorage.getItem("itens") || [];

itens = JSON.parse(itens);

itens.forEach((elemento) => {
  criaElemento(elemento);
});

form.addEventListener("submit", (evento) => {
  evento.preventDefault();

  const nome = evento.target.elements["nome"];
  const quantidade = evento.target.elements["quantidade"];

  const itemAtual = {
    nome: nome.value,
    quantidade: quantidade.value,
  };

  criaElemento(itemAtual);

  itens.push(itemAtual);

  localStorage.setItem("itens", JSON.stringify(itens));

  nome.value = "";
  quantidade.value = "";
});

function criaElemento(item) {
  const novoItem = document.createElement("li");
  novoItem.classList.add("item");

  const numeroItem = document.createElement("strong");
  numeroItem.innerHTML = item.quantidade;

  novoItem.appendChild(numeroItem);
  novoItem.innerHTML += item.nome;

  lista.appendChild(novoItem);
}

Espero ter ajudado e bons estudos!

Muito obrigado Renan, tem horas que passamos despercebidos no erro rsrsrsrs.

Opa, isso é normal, acontece com toda pessoa que desenvolve. Valeu Anderson. Eu vou marcar como solucionado, e fechar esse tópico.