1
resposta

[Dúvida] Undefined nome e email por causa da linha excluída

Boa tarde

Eu percebi o seguinte problema neste código e pelo que percebi aconteceu com outras pessoas também.

O código que o professor faz no curso, o mesmo possibilita excluir a linha inteira do cadastro do cliente clicando em qualquer parte da linha do cadastro, ao invés de excluir a linha somente quando clicar no "botão Excluir", e devido a esse problema, quando chega na aula de voce editar as informações de email e nome, aparece o undefined.

Abaixo está a prova desse problema.

LISTA DE CLIENTE ANTES DA EDIÇAO DAS INFORMAÇÕES

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

ARQUIVO db.json QUE GUARDA AS INFORMAÇÕES DOS CLIENTES

Notem que o objeto guarda somente a informação de um cliente no cadastro

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

LISTA DE CLIENTE DEPOIS DE CLICAR E EDITAR

Aparece o undefined nos campos nome e email

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

ARQUIVO db.json QUE GUARDA AS INFORMAÇÕES DOS CLIENTES

De modo que o código permite excluir a linha do cadastro do cliente por inteiro clicando em qualquer parte da linha, quando clicou-se no "botão Editar", acabou sendo excluida a única linha, fazendo aparecer o undefined, por causa que não tem nenhuma informação armazenada para ser trazida na edição.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A solução para isso, é refatorar a parte do código do botão excluir, para que a linha seja excluída somente clicando no botão "Excluir".

Como fica o código refatorado para o botão excluir, poderiam me ajudar?

1 resposta
// Suponhamos que você tenha um botão "Excluir" com a classe CSS "btn-excluir" para cada linha da lista de clientes.
// E também suponhamos que cada linha da lista de clientes tenha um ID único que corresponda ao ID do cliente no banco de dados.

// Adicione um evento de clique para o botão "Excluir" usando JavaScript:

document.addEventListener('DOMContentLoaded', function () {
  const botoesExcluir = document.querySelectorAll('.btn-excluir');

  botoesExcluir.forEach(botao => {
    botao.addEventListener('click', function () {
      const linhaCliente = this.closest('.linha-cliente');
      const idCliente = linhaCliente.getAttribute('data-id'); // Suponhamos que você armazene o ID do cliente em um atributo data.

      // Agora, você pode enviar uma solicitação para excluir o cliente com o ID correspondente no servidor (ou no arquivo JSON db.json).

      // Por exemplo, usando fetch para uma API (substitua com a lógica real):
      fetch(`/api/excluir-cliente/${idCliente}`, {
        method: 'DELETE',
      })
        .then(response => response.json())
        .then(data => {
          // Atualize a interface do usuário para refletir a exclusão da linha.
          linhaCliente.remove();
        })
        .catch(error => {
          console.error('Erro ao excluir cliente:', error);
        });
    });
  });
});

Com essa refatoração, a exclusão da linha do cliente só ocorrerá quando o botão "Excluir" for clicado, e você não enfrentará mais o problema de "undefined" ao editar as informações.

Espero ter pelomenos dado uma luz de como proceder, qualquer coisas fala que resolvemos isso ae de forma melhor.