1
resposta

Meu código

Não sei se entendi o desafio, mas acho que foi o que fizemos na aula. Eu fiz uma mudança, toda vez que atualiza um item ele vai para o final da lista.


const validarDados = (array) => (array.nome && array.quantidade ? true : false)
function captarDados(e) {
  let nome = e.target.elements['nome-item']
  let quantidade = e.target.elements['qtd-item']

  const dados = {
    nome: nome.value,
    quantidade: quantidade.value
  }

  if (validarDados(dados)) {
    const existe = itens.find((el) => el.nome === dados.nome)

    if (existe) {
      dados.id = existe.id
      itens[existe.id] = dados

      atualizaDado(dados)
      criarElemento(dados)
    } else {
      dados.id = itens.length
      criarElemento(dados)
      itens.push(dados)
    }
  } else {
    alert('Favor preencher todos os campos!')
  }

  setDados(itens)

  nome.value = ''
  quantidade.value = ''
}
function criarElemento(array) {
  let strong = document.createElement('strong')
  strong.dataset.id = array.id
  strong.classList.add('qtd-item')
  let btn = document.createElement('button')
  btn.classList.add('del-btn')

  strong.textContent = `${array.quantidade}`
  btn.textContent = 'x'

  let li = document.createElement('li')
  li.classList.add('lista__item')
  li.appendChild(strong)
  li.innerHTML += `<span class="nome-item">${array.nome}</span>`
  li.appendChild(btn)
  lista.appendChild(li)
}
function setDados(array) {
  localStorage.setItem('itens', JSON.stringify(array))
}
function atualizaDado(item) {
  let dado = document.querySelector(`[data-id="${item.id}"]`)
  dado.innerHTML = item.quantidade
  lista.removeChild(dado.parentNode)
}
1 resposta

Oi Antonio, tudo bem?

Isso aí! Parabéns por praticar, essa parte é super importante para consolidar o seu conhecimento e muito obrigada por compartilhar com a gente o seu resultado :D

Um abraço e bons estudos.