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

Não sei como excluir uma lista de itens do meu localStorage

Bom dia, tarde e noite rsrs.

Desenvolvi um projeto onde por meio de um formulário eu valido informações do meu PC (processador, ram, sdd, placa de video e afins) e o nomeio como PC-1 por exemplo. Essas informações são validadas e armazenadas dentro de uma ul em várias li, as crio usando JS. Em seguida salvo essas informações em um array no localStorage. BASICAMENTE é isso, rsrs. Estagnei no projeto após ter criado o botão de remover a lista do PC-1 do DOM, porém não consigo remover do localStorage, quer dizer, consigo, mas se eu tiver vários PC's, como PC-1 e PC-2, só consigo desenvolver um método para apagar tudo de uma vez, e não um ou outro. Vou disponibilizar o projeto no meu git hub como publico.

https://github.com/RochaDevs/007

2 respostas
solução!

Para facilitar a manipulação de DOM é muito importante a criação de um ID único para o objeto que está sendo criado, sendo esse ID também o da tag que você ira remover. No objeto "dadosPc" foi colocado um atributo id com essa verificação para se ter um id novo, não se repetindo com outros objetos e causando confusão na hora de apagar:

const dadosPc = {

        id: registros[registros.length - 1] ? (registros[registros.length - 1]) + 1 : 0,

        pcNome: evento.target.elements['pcNome'].value,

        especProcessador: evento.target.elements['especificacoesProcessador'].value,
        marcaProcessador: evento.target.elements['marcaProcessador'].value,
        valorProcessador: evento.target.elements['valorProcessador'].value,
        
        especVideo: evento.target.elements['especificacoesVideo'].value,
        marcaVideo: evento.target.elements['marcaVideo'].value,
        valorVideo: evento.target.elements['valorVideo'].valor,
    
        especMemoria: evento.target.elements['especificacoesMemoria'].value,
        marcaMemoria: evento.target.elements['marcaMemoria'].value,
        valorMemoria: evento.target.elements['valorMemoria'].value,
    
        especPerifericos: evento.target.elements['especificacoesPerifericos'].value,
        marcaPerifericos: evento.target.elements['especificacoesPerifericos'].value,
        valorPerifericos: evento.target.elements['valorPerifericos'].value,
    }

Também alterei a função criarRegistro(dadosPc), ao invés de você colocar o id como "lista" em todas as tags 'ul', atribua o id do objeto a elas Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Por ultimo a função de apagar:

function removerRegistro (elemento) {

    //removendo o registro do DOM
    elemento.remove()

    //use a função "findIndex()" para achar a posição do resgistro
    const registroIndex = registros.findIndex( e => e.id == elemento.id)

    //a função splice(), recebe dois parametros, o primeiro a posição do elemento a ser apagado e a segunda a quantidade de elementos que vão ser removidos
    registros.splice(registroIndex, 1)

    //subindo para o localStorage o novo array sem o elemento removido
    localStorage.setItem('registros', JSON.stringify(registros))

}

Espero ter ajudado amigo

Fantastico amigo! Agradeço!