2
respostas

[Dúvida] Precisei acrescentar a seleção da Tag strong dentro da função de atualizaElemento, pois senão quando atualizava o HTML do item, acabava ficando só a quantidade sem o nome dele, queria saber se mais alguém teve esse problema?

const form = document.getElementById("novoItem"); const lista = document.getElementById("lista"); const itens = JSON.parse(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 existe = itens.find(elemento => elemento.nome === nome.value);

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

if (existe) { itemAtual.id = existe.id; atualizaElemento(itemAtual); itens[existe.id] = itemAtual } else { itemAtual.id = itens.length; 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.dataset.id = item.id;

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

lista.appendChild(novoItem); }

function atualizaElemento(item) { document.querySelector("[data-id='"+item.id+"']").querySelector('strong').innerHTML = item.quantidade }

2 respostas

Olá Ângelo!

Tudo bem?

Acho que não tinha essa necessidade, isso aconteceu porque logo após você criar o elemento strong, você atribuiu o item.id ao novoItem.dataset.id = item.id, o certo não seria atribuir ao numeroItem.innerHTML dessa forma? "numeroItem.dataset.id = item.id". Eu copiei o código da "opinião do instrutor" na atividade e está assim e funcionando.

Espero ter ajudado e bons estudos! QUalquer dúvida manda aqui.

Valeu pelo suporte Renan, não tinha notado a diferença.