Bom, basicamente eu estou tendo problema na hora de atualizar o valor da quantidade, eu consigo colocar primeiramente o nosso valor inicial, porém para substituir a quantidade do item, ocorre um erro que ele meio que reescreve acima do nosso item em HTML e meio que para de adicionar outros itens e meio que tira os elementos da página deixando somente o número
HTML
<!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">
</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">
<label for="item">Quantidade</label>
<input type="number" name="quantidade" id="quantidade">
<input type="submit" value="Adicionar" class="cadastrar">
</form>
</div>
<ul class="lista" id="lista" data-id="0"> </ul>
</main>
<script src="js/main.js"></script>
</body>
</html>
JS
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)
} else {
itemAtual.id = itens.length
criaElemento(itemAtual);
itens.push(itemAtual)
}
localStorage.setItem("itens", JSON.stringify(itens))
nome.value = "";
quantidade.value = "";
})
function criaElemento(item) {
//<li class="item"><strong>7</strong>Camisas</li>
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
}