Estou fazendo um crud com JavaScript, e estou com um pequeno problema na hora de atualizar.
Quando recupero o meu objeto, estou deletando o objeto selecionado e esse objeto é montado no formulário, até aqui OK. Só que eu quero na hora que eu for editar eu não apague o objeto da tabela e quando for alterado o objeto ele faça a alteração.
Resumindo: Para não ter duplicação de valor na tabela, no meu método atualizarContato eu fiz a remoção do objeto e montei ele no formulário.
document.getElementById('formulario').addEventListener('submit',cadastrarContato);
function cadastrarContato(e){
e.preventDefault();
var nome = document.querySelector('#campo-nome').value;
var dataNascimento =document.querySelector('#campo-dataNascimento').value;
var email =document.querySelector('#campo-email').value;
var endereco =document.querySelector('#campo-endereco').value;
var celular =document.querySelector('#campo-celular').value;
if(!nome || !dataNascimento || !email || !celular){
alert('Existem algum campo não preenchido, favor verificar!');
return false;
}
var contato = {
"nome" : nome,
"data" : dataNascimento,
"email" : email,
"endereco" : endereco,
"celular" : celular
}
if(localStorage.getItem('contato') == null){
var contatos = [];
contatos.push(contato);
localStorage.setItem('contato',JSON.stringify(contatos)); //transforma o objeto JS para formado JSON.
}else {
var contatos = JSON.parse(localStorage.getItem('contato'));
contatos.push(contato);
localStorage.setItem('contato',JSON.stringify(contatos));
}
console.log(contato);
document.getElementById('formulario').reset();
mostraContatos();
}
function mostraContatos(){
var contatos = JSON.parse(localStorage.getItem('contato'));
var contatoResultado = document.querySelector("#resultados");
contatoResultado.innerHTML='';
for(var i = 0; i < contatos.length; i++){
var nome = contatos[i].nome;
var dataNascimento = contatos[i].data;
var email = contatos[i].email;
var endereco = contatos[i].endereco;
var celular = contatos[i].celular;
contatoResultado.innerHTML +='<tr>'+
'<td>'+ nome + '</td>'+
'<td>'+ dataNascimento + '</td>'+
'<td>'+ email + '</td>'+
'<td>'+ endereco + '</td>'+
'<td>'+ celular + '</td>'+
'<td> <button class="btn-excluir" onclick="excluirContato(\''+nome+'\')"> Excluir </button> </td>'+
'<td> <button class="btn-editar" onclick="atualizarContato(\''+nome+'\')"> Editar </button> </td>'+
'</tr>'
}
}
function excluirContato(nome){
var contatos = JSON.parse(localStorage.getItem('contato'));
for(var i = 0; i < contatos.length; i++){
if(contatos[i].nome == nome){
if(confirm(nome+' será excluído ?')){
contatos.splice(i, 1);
}
}
localStorage.setItem('contato',JSON.stringify(contatos));
}
mostraContatos();
}
function atualizarContato(nome){
if(confirm('Deseja editar o contado? ')){
var contatos = JSON.parse(localStorage.getItem('contato'));
var contatoEncontrado;
for(var i =0; i <contatos.length; i++){
if(contatos[i].nome == nome){
contatoEncontrado = contatos[i];
contatos.splice(i, 1);
}
}
localStorage.setItem('contato', JSON.stringify(contatos));
document.querySelector('#campo-nome').value = contatoEncontrado.nome;
document.querySelector('#campo-dataNascimento').value = contatoEncontrado.data ;
document.querySelector('#campo-email').value = contatoEncontrado.email ;
document.querySelector('#campo-endereco').value = contatoEncontrado.endereco;
document.querySelector('#campo-celular').value = contatoEncontrado.celular;
contatos.push(contatoEncontrado);
mostraContatos();
}
}