Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically add/remove rows from html table

I am working on a table that can be modified by pressing "Delete" buttons in each row and "Insert row" to add a new one at the end:

So far by now my code is:

<!DOCTYPE html>
<html>
<head>
<script>
function deleteRow(id,row) {
    document.getElementById(id).deleteRow(row);
}

function insRow(id) {
    var filas = document.getElementById("myTable").rows.length;
    var x = document.getElementById(id).insertRow(filas);
    var y = x.insertCell(0);
    var z = x.insertCell(1);
    y.innerHTML = '<input type="text" id="fname">';
    z.innerHTML ='<button id="btn" name="btn" > Delete</button>';
}
</script>
</head>
<body>

<table id="myTable" style="border: 1px solid black">
<tr>
  <td><input type="text" id="fname"></td>
  <td><input type="button" value="Delete" onclick="deleteRow('myTable',0)"></td>
</tr>
<tr>
  <td><input type="text" id="fname"></td>
  <td><input type="button" value="Delete" onclick="deleteRow('myTable',1)"></td>
</tr>
<tr>
  <td><input type="text" id="fname"></td>
  <td><input type="button" value="Delete" onclick="deleteRow('myTable',2)"></td>
</tr>
</table>
  
 <p>
<input type="button" onclick="insRow('myTable')" value="Insert row">
</p>
</body>
</html>

But i cannot attach the function onclick="deleteRow('myTable',0)" on

z.innerHTML ='<button id="btn" name="btn"> Delete</button>'

¿Is there something else i need to declare in order to make that button work when clicked?

Thanks for your answers

like image 442
David Menacho Avatar asked Jan 28 '15 03:01

David Menacho


People also ask

How to add (insert)/remove (delete) HTML table rows dynamically using JavaScript?

A new row will be added (inserted) using TextBoxes in Footer row in the HTML Table while a row will be removed (deleted) using a Remove button within the HTML Table row using JavaScript. In this article I will explain with an example, how to add (insert) / remove (delete) HTML Table Rows dynamically using JavaScript.

How to add new row dynamically in table using JavaScript?

To add row dynamically, create a JavaScript method say addNewRow () and call it on a button click. 3.) Inside addNewRow (), find the rowCount and insert the new row at the bottom of the table. eg.- var table = document.getElementById ("employee-table"); var rowCount = table.rows.length; var row = table.insertRow (rowCount);

How do I add or remove a row from a table?

Initially, the table is empty and has no rows. We will start by adding rows dynamically inside the table body and then see how to remove a row from the table. To add a row, define a variable that keeps the count of the total number of that now exists in the table.

How to add and remove dynamic row in table in MySQL?

For adding dynamic row in table, we have used insertRow () method. This method will insert a row at position specified by the index arguement. Also for removing row, we have used deleteRow () method. Note that for inserting dynamic row, we have to created cells by using row.insertCell () method. Check the online demo.


1 Answers

First off, IDs must be unique, so why not use classes here instead?

Second, if you're using jQuery, then use jQuery.

Third, you need to use event delegation when dynamically adding elements, so try the following:

$('#myTable').on('click', 'input[type="button"]', function () {
    $(this).closest('tr').remove();
})
$('p input[type="button"]').click(function () {
    $('#myTable').append('<tr><td><input type="text" class="fname" /></td><td><input type="button" value="Delete" /></td></tr>')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="myTable" style="border: 1px solid black">
    <tr>
        <td>
            <input type="text" class="fname" />
        </td>
        <td>
            <input type="button" value="Delete" />
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" class="fname" />
        </td>
        <td>
            <input type="button" value="Delete" />
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" class="fname" />
        </td>
        <td>
            <input type="button" value="Delete" />
        </td>
    </tr>
</table>
<p>
    <input type="button" value="Insert row">
</p>
like image 56
j08691 Avatar answered Oct 15 '22 11:10

j08691