Tive vários erros ao longo desse curso, eu acabei desistindo esses dias, mas hoje resolvi rever ele para entender melhor o que estava acontecendo em cada linha de código, então meu código esta cheio de anotações que eu fiz agora para não me perder, mas quando vou testar, ainda não funciona. Sei que meu código ainda tem algumas coisas diferentes do professor, mas não sei dizer o que exatamente gera o não funcionamento do projeto.
Me ajudem a identificar os erros por favor
const form = document.getElementById("novoItem") // informacoes passadas pelo usuario
const listaHTML = document.getElementById("lista") // lista dos itens
const itens = JSON.parse(localStorage.getItem("itens")) || [] // lista dos elementos do LS ||(ou) lista vasia([])
//JSON.parse transforma a string (guardada no LS) para obj
itens.forEach( (elemento) => {
criaElemento(elemento)
} )
// passa pela constante "itens" e a da vez vira parametro de criaElemento()
form.addEventListener("submit", (evento) => {
evento.preventDefault() // impede o comportamento padrao
const nome = evento.target.elements['nome']
const quantidade = evento.target.elements['quantidade']
// o elements pega o atributo for="" do elemento HTML acessado
const existe = itens.find( elemento => elemento.nome === nome.value)
// elemento aqui sao todos os objetos de itens existentes ate o momento
// o find procura que existe um nome dentro de algum objeto que seja igual ao valor de nome passado pelo usuario no input
const itemAtual = {
"nome": nome.value,
"quantidade": quantidade.value
}//cria um objeto com os valores que o usuario passar como nome e quantidade
if (existe) {
itemAtual.id = existe.id //item em questao tem seu id igual ao id do item existente
atualizaElemento(itemAtual)
itens[existe.id] = itemAtual
}else {
itemAtual.id = itens.length //[itens.length] + 1 ? itens[itens.length].id : 0 --- n fez sentido pra mim, mas estava no curso
criaElemento(itemAtual)
itens.push(itemAtual)
// adciona novo obj de item na lista de objetos itens
}
localStorage.setItem("itens", JSON.stringify(itens))
nome.value = ""
quantidade.value = ""
// finaliza limpando os inputs para a proxima adicao de item
})
function criaElemento(item) { // chamada duas vezes
const novoItem = document.createElement("li")
novoItem.classList.add("item")
const numeroItem = document.createElement("strong")
numeroItem.dataset.id = item.id // iguala o atributo id no numero item com a key do obj item
novoItem.appendChild(numeroItem) //afilia numeroItem a novoItem
numeroItem.innerHTML = item.quantidade // add a qtd passada
novoItem.innerHTML = item.nome
novoItem.appendChild(botaoDeleta(item.id))
listaHTML.appendChild(novoItem) // add tudo criado nessa funcao na ul ja existente no HTML
}
function atualizaElemento(item) {
document.querySelector("[data-id='"+item.id+"']").innerHTML = item.quantidade
// [data-id='id do elemento']
// atualiza a quantidade se o elemento for existente
}
function botaoDeleta(id){
const elementoBotao = document.createElement('button')
elementoBotao.innerText = "X"
elementoBotao.addEventListener('click', function() {
deletaElemento(this.parentNode, id)
})
return elementoBotao
}
function deletaElemento(elemento, id){
elemento.remove()
item.splice(itens.findIndex(elemento => elemento.id == id), 1)
localStorage.setItem("itens", JSON.stringify(itens))
}