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

O ID não está sendo atualizado

const form = document.getElementById('novoItem');

const lista = document.getElementById('lista');

const itens = JSON.parse(localStorage.getItem("itens")) || [];

itens.forEach( (elemento) => {

criaEelemento(elemento)

});

form.addEventListener ('submit', (evento) => {

evento.preventDefault();

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

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

const existe = itens.find(elemento => elemento.nome === nome.value);

const itemAtual = {

'nome': nome,
'quantidade': quantidade

}

if (existe){

itemAtual.id = existe.id
atualizaElemento(itemAtual);
itens[existe.id] = itemAtual;

}else{

itemAtual.id = itens.length;
criaEelemento(itemAtual);
itens.push(itemAtual);

};

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

form.reset(); });

function criaEelemento (item) {

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


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

lista.appendChild(novoItem);

}

function atualizaElemento (item){

document.querySelector("[data-id='"+item.id+"']").innerHTML = item.quantidade;

}

2 respostas

Mesmo aparentemente o código estando parecido com o que foi ensinado, o ID não está sendo atualizado. Cada vez que um item com o mesmo do nome do anterior é adicionado, é criado um novo ID.

solução!

Resolvido já. O erro estava na const existe = itens.find(elemento => elemento.nome === nome.value);, o na variável "nome", eu já tinha adicionado o .value no final dela, e acabei repetindo o .value no final da const existe. Por isso, não estava atualizando o ID.