I have a code that adds things to the localStorage, everything works correctly, but the delete part does not work, I'll show the code and explain below.
$(function () {
var operacao = "A"; //"A"=Adição; "E"=Edição
var tbClientes = localStorage.getItem("tbClientes");// Recupera os dados armazenados
tbClientes = JSON.parse(tbClientes); // Converte string para objeto
// Caso não haja conteúdo, iniciamos um vetor vazio
if (tbClientes == null)
tbClientes = [];
tbClientes = tbClientes.map(c => JSON.parse(c));
$("#btCadastrarC").on("click", function () {
if ($("#inNome").val() === "" || ($("#inCPF").val() === "" || ($("#inTelefone").val() === ""))) {
$("#algoErrado").text("Preencha os campos corretamente").css({ 'color': 'red', 'opacity': '0.5', 'font-size': '12px' });
return;
} else if (operacao == "A") {
if (Adicionar(tbClientes))
alert("Cadastrado com sucesso!")
}
});
Listar(tbClientes);
$("#tabelaCliente").on("click", "button", function () {
var certeza = confirm("Tem certeza que deseja excluir?")
if (certeza === true ) {
Excluir(tbClientes, this.id);
Listar(tbClientes);
} else {
return
}
});
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
function Adicionar(tbClientes) {
var cliente = JSON.stringify({
Id: guid(),
Nome: $("#inNome").val(),
CPF: $("#inCPF").val(),
Telefone: $("#inTelefone").val(),
Email: $("#inEmail").val(),
Endereço: $("#inEndereco").val(),
Numero: $("#inNumero").val()
});
tbClientes.push(cliente);
console.log("tbClientes - " + tbClientes);
localStorage.setItem("tbClientes", JSON.stringify(tbClientes));
return true;
}
function Excluir(tbClientes, id) {
var indice_selecionado = tbClientes
.findIndex(c => c.Id === id);
if (indice_selecionado === -1)
return;
tbClientes.splice(indice_selecionado, 1);
localStorage.setItem("tbClientes", JSON.stringify(tbClientes));
alert("Cadastro excluído");
}
function Listar(tbClientes) {
$("#tabelaCliente").html(
"<thead>" +
" <tr>" +
" <th>Nome</th>" +
" <th>CPF</th>" +
" <th>Telefone</th>" +
" <th>Email</th>" +
" <th>Endereço</th>" +
" <th>Opções</th>" +
" </tr>" +
"</thead>" +
"<tbody>" +
"</tbody>"
);
for (var i in tbClientes) {
var cli = tbClientes[i];
$("#tabelaCliente tbody").append("<tr>");
$("#tabelaCliente tbody").append("<td>" + cli.Nome + "</td>");
$("#tabelaCliente tbody").append("<td>" + cli.CPF + "</td>");
$("#tabelaCliente tbody").append("<td>" + cli.Telefone + "</td>");
$("#tabelaCliente tbody").append("<td>" + cli.Email + "</td>");
$("#tabelaCliente tbody").append("<td>" + cli.Endereço + " nº " + cli.Numero + "</td>");
$("#tabelaCliente tbody").append("<td><button type='button' class='btn btn-danger' id='" + cli.Id + "' >Excluir</button></td>");
$("#tabelaCliente tbody").append("</tr>");
}
}
});
When I try to delete by clicking the button that is generated by the following code:
$("#tabelaCliente tbody").append("<td><button type='button' class='btn btn-danger' id='" + cli.Id + "' >Excluir</button></td>");
Nothing happens, does not delete and does not show any error in the console, I believe what is wrong would be this part:
function Excluir(tbClientes, id) {
var indice_selecionado = tbClientes
.findIndex(c => c.Id === id);
if (indice_selecionado === -1)
return;
tbClientes.splice(indice_selecionado, 1);
localStorage.setItem("tbClientes", JSON.stringify(tbClientes));
alert("Cadastro excluído");
}
I believe you're falling on the
if(indice_selecionado === -1)
return
But how can I resolve this problem?