Quando coloco novos itens e quantidades diferentes, a minha quantidade de itens não atualiza, mantendo sempre a mesma quantidade colocada na primeira vez que adiciono o item. O código abaixo é praticamente igual ao colocado pelo professor na videoaula.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mochila de viagem</title>
<link rel="stylesheet" href="css/style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
<script src="main.js" defer ></script>
</head>
<body>
<main class="conteudo">
<div class="principal">
<div class="mochila"></div>
<form action="" class="adicionar" id="novoItem">
<label for="item">Nome</label>
<input type="text" name="nome" id="nome" placeholder="Digite qual item quer adicionar na mochila.">
<label for="item">Quantidade</label>
<input type="number" name="quantidade" id="quantidade" placeholder="Digite a quantidade">
<input type="submit" value="Adicionar" class="cadastrar">
</form>
</div>
<ul class="lista" id="lista">
</ul>
</main>
</body>
</html>
const form = (document.getElementById("novoItem"))
const lista = document.getElementById ('lista')
const listaDeCoisas = JSON.parse(localStorage.getItem ("listaDeCoisas")) ||[]
listaDeCoisas.forEach(element => {
criaElemento (element)
});
form.addEventListener ("submit", (evento) =>{
evento.preventDefault()
const nome = evento.target.elements['nome']
const quantidade = evento.target.elements['quantidade']
const itemAtual = {
"nome": nome.value,
"quantidade": quantidade.value,
}
const existe = listaDeCoisas.find(element => element.nome === nome.value)
if (existe){
itemAtual.id = existe.id
atualisaElemento (itemAtual)
listaDeCoisas.existe.id = itemAtual
}else {
itemAtual.id = listaDeCoisas.length
criaElemento(itemAtual)
listaDeCoisas.push(itemAtual)
}
localStorage.setItem ("listaDeCoisas", JSON.stringify(listaDeCoisas))
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 atualisaElemento (item) {
document.querySelector ("[data-id='"+ item.id +"']").innerHTML = item.quantidade
}