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

[Dúvida] Não atualiza corretamente os itens

Boa tarde! Eu acredito que meu código esteja bem parecido com o do instrutor Pedro, mas não tenho os mesmos resultados. Ao atualizar um item ele atualiza com se fosse o primeiro elemento da lista. ou seja, no meu caso ele só atualiza a camisa preta. Se coloco camisa branca para 1 (era 5) ele transforma é a camisa preta em 5. O que eu poderia estar fazendo de errado? Meu código está assim

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.lenght

        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
    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 
}
1 resposta
solução!

Consegui encontrar o erro e estava no código HTML, no id novoItem que não estava atualizado

:)