JavaScript - Ayuda con una función para eliminar datos de una tabla

 
Vista:
sin imagen de perfil

Ayuda con una función para eliminar datos de una tabla

Publicado por Brut (1 intervención) el 24/03/2024 23:03:20
Buen día. Estoy programando una tabla que recibe datos desde un formulario html. El problema está en que cada dato insertado a la tabla debe ser eliminado al dar clic a un botón para eliminar específicamente una solicitud. Pues bien, en este caso el código parece no funcionar, pues si bien tengo el JavaScript que en teoría debería eliminar los datos del almacenamiento local y la fila de la tabla, cuando hago clic al botón eliminar no hace nada.

El código que he probado es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
function deleteRequest(requestId) {
  var confirmDelete = confirm('¿Estás seguro de que quieres eliminar esta solicitud?');
  if (confirmDelete) {
    localStorage.removeItem(requestId);
    var table = document.getElementById('dataReceivedTable').getElementsByTagName('tbody')[0];
    var row = document.querySelector('tr[data-request-id="' + requestId + '"]');
    if (row) {
      table.removeChild(row);
    }
  }
}

El código que inserta los datos y añade el correspondiente botón de eliminar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
document.addEventListener('DOMContentLoaded', function() {
  // Función para insertar los datos en la tabla
  function insertDataIntoTable(data, requestId) {
    var table = document.getElementById('dataReceivedTable');
    var row = table.insertRow();
    row.setAttribute('data-request-id', requestId);
    var actions = '<button class="delete-btn" onclick="deleteRequest(\'' + requestId + '\')">Eliminar</button>' +
                         '<button class="edit-btn" onclick="editRequest(\'' + requestId + '\')">Editar</button>';
 
    row.innerHTML = `
      <td>${xxxx}</td>
      <td>${xxxx}</td>
      <td>${xxxx}</td>
// Continuación del código para insertar los datos en la tabla
  `;
}
 
 
  Object.keys(localStorage).forEach(function(key) {
    if (key.startsWith('REQ')) {
      var requestData = JSON.parse(localStorage.getItem(key));
      insertDataIntoTable(requestData, key);
    }
  });
});


También anexo el html de la tabla:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table>
    <thead>
      <tr>
        <th>COLUMNA 1</th>
        <th>COLUMNA 2</th>
        <th>COLUMNA 3</th>
     <!-- Continuación de las columnas -->
        <th>COLUMNA 11</th>
      </tr>
    </thead>
    <tbody id="dataReceivedTable">
    </tbody>
  </table>
</div>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan

Ayuda con una función para eliminar datos de una tabla

Publicado por Ivan (118 intervenciones) el 28/03/2024 09:41:23
Hola,

es un poco complicado de resolver mirando simplemente el código sin saber la estructura de datos local pero aquí van mis observaciones:

1 - Puede deberse a que el identificador de la solicitud (requestId) no se está pasando correctamente a la función deleteRequest(). Dado que estás utilizando el identificador de la solicitud como clave en el almacenamiento local, es importante asegurarse de que se pase correctamente a la función para que pueda eliminar los datos correspondientes del almacenamiento local y la fila de la tabla.

2 -Asegúrate de que el evento de clic en el botón de eliminar esté siendo detectado correctamente y que la función deleteRequest() se esté ejecutando cuando se hace clic en el botón.

3 - Asegúrate de que el identificador de la solicitud se esté pasando correctamente desde la función insertDataIntoTable() cuando se crea el botón de eliminar. Verifica que requestId tenga el valor correcto en el momento de la llamada a deleteRequest().

4 -Verifica que el botón de eliminar esté siendo correctamente detectado y que el evento de clic esté siendo manejado correctamente. Puedes agregar una declaración console.log() dentro de la función deleteRequest() para verificar si se está ejecutando cuando haces clic en el botón.

En definita, utiliza console log en cada paso para verificar que el requestId se va traspasando correctamente y que coincide con el almacenamiento local y que las funciones toman los valores correctos.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar