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

Função AtualizaElemento() não soma a quantidade com o item já existente

Já revisei todo o código para ter certeza que não tem nenhum erro e aparentemente está tudo certo de acordo com o que foi passado na aula, o problema é que a função atualizaElemento ao invés de somar o item que já existe ela está atualizando e substituindo a quantidade do item.

Alguém sabe me dizer o que está errado?

o código até o momento.

const form = document.querySelector('#novoItem');
const lista = document.querySelector('#lista')
const itens = JSON.parse(localStorage.getItem('itens')) || []

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

form.addEventListener('submit', (event) => {
    const nomeItem = event.target.elements['nome']
    const quantidadeItem = event.target.elements['quantidade']

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

    const itemAtual = {
        "nome": nomeItem.value,
        "quantidade": quantidadeItem.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))

    nomeItem.value = ""
    quantidadeItem.value = ""

    event.preventDefault()
})

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
}
2 respostas
solução!

Bom dia Maicon!

Você não vai encontrar nenhum problema porque realmente não há! Está tudo certo, essa é a lógica da função atualizaElemento() mesmo, ele substitui por um novo elemento e quantidade. Se você quiser fazer uma atualização incremental, terá que criar uma outra função com uma lógica diferente.

Boa noite Matheus!

Revi o vídeo e realmente a função substitui o valor ao invés de incrementar foi falta de atenção minha, mesmo assim muito obrigado por tirar minha dúvida.