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

tag strong some da tela e quantidade não somam

Boa tarde,

quando eu insiro uma nova quantidade com o mesmo item, na tela a tag strong some, fica apenas o número da quantidade e a descrição não aparece. E as quantidade não estão somando, apenas se sobrescrevendo.

Este curso vai me ajudar muito no estágio, caso eu consiga entender o porque deste erro.

Obrigada pessoal :)

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

console.log(itens);

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

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

  const nome = e.target.elements["nome"];
  const quantidade = e.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);
  } 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}"]`).innerHTML = item.quantidade;
}
1 resposta
solução!

Opa Tiago, tudo bem?

Analisando seu código percebi uma mudança que podemos fazer para que seu código funcione normalmente.

No caso me refiro na função de criação de elementos, no momento de manipular os ids foi referenciado o novoItem invés de numeroItem:


novoItem.dataset.id = item.id
//Substituir por:
numeroItem.dataset.id = item.id

Se precisar de ajuda ou tiver alguma dúvida, estou à disposição, conte comigo!

Um bom dia e bons estudos

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓