Last updated: 10th February 2025
HTML tables provide an effective way for developers to display data in rows and columns. While many developers today use lightweight alternatives like <div> elements, HTML tables remain a powerful and useful tool for presenting text, images, and links in a structured format. In this article, I’ll show you a simple method to dynamically add rows to an HTML table using jQuery. This technique is essential for scenarios where you need to extract and display data dynamically from a remote source, such as a database. Read on to learn how to enhance your web applications with dynamic table rows using jQuery.
See this demo
This example is especially helpful when you don't have a complete dataset at design time. Instead, you can dynamically extract data from a remote source, such as a database, and display it in a tabular format on your web page. This approach allows for real-time data retrieval and display, making your web application more responsive and efficient.
Example:
Now, let’s design a simple form using the above procedure and methods. Dynamically I wish to add input boxes (inside <td>) in each newly added row, also add two buttons, one to submit the form data and another to reset the form (clear all the input boxes).
The Markup and the Script
<!DOCTYPE html>
<html>
<head>
<title>Dynamically Add Table Row using jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<style>
table
{
width: 100%;
}
table, th, td
{
border: solid 1px #DDD;
border-collapse: collapse;
padding: 2px 3px;
text-align: center;
}
</style>
</head>
<body>
<p>Click the button to add rows to the table!</p>
<p><input type="button" id="bt" value="Click to add rows!" /></p>
<!--// Add the table tag (only). We'll add rows dynamically.-->
<table></table>
</body>
<script>
$(document).ready(function () {
$('#bt').click(function () {
const $table = $('table');
$table.empty();
// Append table header.
$table.append('<thead><tr><th>Name</th><th>Designation</th></tr></thead><tbody></tbody>');
const $tbody = $table.find('tbody');
// Add rows dynamically using an array of 5 elements.
for (let i = 1; i <= 5; i++) {
$tbody.append(
`<tr>
<th><input id="name${i}" type="text" class="input" /></td>
<th><input id="desig${i}" type="text" class="input" /></td>
</tr>`
);
}
// Add Submit and Reset buttons at the end of the table.
$tbody.append(
`<tr>
<td><input type="button" id="btSubmit" value="Submit"></td>
<td><input type="button" id="btReset" value="Reset"></td>
</tr>`
);
// Handle Submit button click.
$('#btSubmit').click(function () {
let values = '';
$('.input').each(function (i) {
const nameValue = $(`#name${i + 1}`).val();
const desigValue = $(`#desig${i + 1}`).val();
if (nameValue) {
values += `<b>Name</b>: ${nameValue}, <b>Designation</b>: ${desigValue}<br />`;
}
});
// Display the extracted values.
const $divResult = $('<div>', {
css: {
padding: '5px',
width: 'auto'
},
html: `<p><h3>Employee Details</h3></p>${values}`
});
$('body').append($divResult);
});
// Handle Reset button click.
$('#btReset').click(function () {
$('.input').val(''); // Clear all text fields.
});
});
});
</script>
</html>