1
resposta

Duvida no storage do devtools

Não sei se é a versão do chrome que estou usando ou o código em si, mas ao adicionar algum item na mochila, os valores não estão sendo guardados no local storage igual o do professor, fica assim:

Pra deixar claro, no meu html está apenas até " 3 Meias", adicionei duas camisas brancas, mas aparentemente não está guardando o valor.

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

const form = (document.getElementById("novoItem"))

//criamos uma id no html chamada lista, pois a class fica pro css e o id pro js
const lista = document.getElementById("lista")


form.addEventListener ("submit", (evento) => { //o submit chama a função cria elemento
    evento.preventDefault()

    const nome = evento.target.elements['nome']
    const quantidade = evento.target.elements['quantidade']
    const itens = [] 
    
    criaElemento (nome.value, quantidade.value) 
    
        nome.value = ""
        quantidade.value = ""
} )

function criaElemento (nome, quantidade) {

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

    const numeroItem = document.createElement('strong')
  
    novoItem.appendChild(numeroItem)
    novoItem.innerHTML += nome

    lista.appendChild(novoItem)

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

    itens.push(itemAtual)

    localStorage.setItem("item", JSON.stringify(itens)) 
    
1 resposta

Olá Gabriel! Tudo ok contigo?

Analisando o código que você compartilhou, identifiquei um possível problema na função criaElemento. Parece que você está criando um novo elemento li, mas não está atribuindo a ele a variável novoItem. Para corrigir isso, você pode fazer o seguinte:

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

const numeroItem = document.createElement('strong');
novoItem.appendChild(numeroItem);
novoItem.innerHTML += nome;

lista.appendChild(novoItem);

const itemAtual = {
  "nome": nome,
  "quantidade": quantidade
};

itens.push(itemAtual);

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

Note que adicionei a linha const novoItem = document.createElement('li'); para atribuir o novo elemento li à variável novoItem. Além disso, alterei o nome da chave no Local Storage para "itens" em vez de "item", já que você está armazenando um array de objetos.

Outra observação é que você está criando um novo array itens dentro do evento de submit do formulário. Isso fará com que o array seja recriado a cada submissão, perdendo os valores anteriores. Para corrigir isso, você pode declarar o array itens fora do escopo da função criaElemento, assim ele será mantido entre as submissões.

Espero que essas alterações resolvam o problema que você está enfrentando. Se ainda tiver alguma dúvida, é só me falar!

Espero ter ajudado e bons estudos!