Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

232
Vistas
Javascript agrega una nueva línea a la tabla y reemplaza las ID

Soy un programador aficionado y lucho con el siguiente problema: obtuve un elemento de tabla con algunas filas, cada fila con 3 celdas. A través de un botón en la parte inferior, me gustaría agregar filas. La tabla se ve así:

 <table id="mytable"> <tr id="line[0]"><td id="cellA[0]"</td><td id="cellB[0]"</td><td id="cellC[0]"</td></tr> <tr id="line[1]"><td id="cellA[1]"</td><td id="cellB[1]"</td><td id="cellC[1]"</td></tr> <tr id="line[2]"><td id="cellA[2]"</td><td id="cellB[2]"</td><td id="cellC[2]"</td></tr> </table>

Recorro con elementbyID "línea" para encontrar que la última línea es [2]. Y luego agregue una nueva línea como esta:

 var table = document.getElementById("mytable"); var row = table.insertRow(oldID + 1); row.setAttribute("id","line["+ oldID + 1 + "]");

Esto funciona muy bien.

Luego obtengo el contenido de la última línea a través de var lastLine = document.getElementById(oldID).innerHTML. Ahora que los td ID son cellA[2], cellB[2] y cellC[2]. Me gustaría reemplazarlos con [3].

Intenté lo siguiente:

 var oldVar = "[" + oldID + "]"; var newVar = "[" + oldID + 1 + "]"; var regex = new RegExp(oldVar, "g"); var neueLine = lastLine.replace(regex, newVar);

pero esto da como resultado identificadores como este "cellA[3][3]", "cellB[3][3]" y "cellC[3][3]".

Siento que mi conocimiento limitado se está perdiendo la supuesta forma de hacer esto.

¡Muchas gracias por tu ayuda!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puedes usar reemplazar todo

 lastLine = lastLine.replaceAll("[" + oldID + "]","[" + (oldID+1) + "]")
about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto funcionará: posiblemente se pueda codificar en menos instrucciones, pero es muy legible. También arreglé el HTML inválido

 window.addEventListener("load", function() { const table = document.querySelector("#mytable tbody"); document.getElementById("add").addEventListener("click", function() { const lastRow = table.querySelector("tr:last-child") let id = +lastRow.id.replace(/\D+/g, ""); // grab and convert to number let newId = id+1; const newLine = lastRow.cloneNode(true); newLine.id = newLine.id.replace(id,newId); newLine.querySelectorAll("td").forEach(cell => cell.id = cell.id.replace(id,newId)) table.appendChild(newLine) }) })
 <input type="button" id="add" value="Add" /> <table id="mytable"> <tbody> <tr id="line[0]"> <td id="cellA[0]">A</td> <td id="cellB[0]">B </td> <td id="cellC[0]">C</td> </tr> <tr id="line[1]"> <td id="cellA[1]">A </td> <td id="cellB[1]">B</td> <td id="cellC[1]">C </td> </tr> <tr id="line[2]"> <td id="cellA[2]">A</td> <td id="cellB[2]">B</td> <td id="cellC[2]">C</td> </tr> </tbody> </table>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda