Reputation: 57
How to create Dynamic table using JQuery I created with .append but problem is when i am clicking on again so create anther table but i want add in to a same table so how can i do that please help me.
$(function () {
$("#addProduct").click(function () {
var table = $('<table></table>').addClass('foo');
for (i = 0; i < 10; i++) {
var row = $('<tr></tr>');
for (i = 0; i < 10; i++) {
var row1 = $('<td></td>').addClass('bar').text('result ' + i);
table.append(row);
row.append(row1);
}
}
$('#someContainer').append(table);
});
});
This is HTML
<button id="addProduct">Add Product</button>
<div id="someContainer"></div>
Upvotes: 3
Views: 47351
Reputation: 643
based on @Olrac's answer
var tableBody = $('<table></table>').append($("<tbody>"));
$.each(dbRecords,function(index,record){
row = $('<tr></tr>');
$.each(record,function(i,cellValue){
var rowData = $('<td></td>').text(cellValue);
row.append(rowData);
});
tableBody.append(row);
});
$('#contentDiv').append(tableBody);
this worked very nice
output
<table>
<tbody>
<tr>
<td>name</td>
<td>age</td>
<td>email</td>
<td>data</td>
</tr>
<tr>
<td>omar</td>
<td>26</td>
<td>[email protected]</td>
<td>123</td>
</tr>
<tr>
<td>ali</td>
<td>22</td>
<td>[email protected]</td>
<td>456</td>
</tr>
</tbody>
</table>
Upvotes: 0
Reputation: 129
<html>
<head>
</head>
<body>
<table id="game_table" border="1"></table>
<script language="JavaScript">
gt = document.getElementById('game_table'),
i = 0,
frag = document.createDocumentFragment(),
tr = document.createElement('tr'),
td = document.createElement('td');
while (i<10) {
var _tr = tr.cloneNode(),
j = 0;
while (j<10) {
_tr.appendChild(td.cloneNode());
var min = 1 ;
var max = 3 ;
var a = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var temp = document.createElement('div');
temp.innerHTML = "str";
_tr.appendChild(temp.firstChild);
j++;
}
frag.appendChild(_tr);
i++;
}
gt.appendChild(frag);
</script>
</body>
</html>
Upvotes: 0
Reputation: 1537
Try my answer
$(function () {
$("#addProduct").click(function () {
var table = $('<table></table>').addClass('foo');
for (var i = 0; i < 10; i++) {
row = $('<tr></tr>');
for (var j = 0; j < 10; j++) {
var rowData = $('<td></td>').addClass('bar').text('result ' + j);
row.append(rowData);
}
table.append(row);
}
if ($('table').length) {
$("#someContainer tr:first").after(row);
}
else {
$('#someContainer').append(table);
}
});
});
Upvotes: 10
Reputation: 2528
$(function () {
$("#addProduct").click(function () {
var table
if($('#someContainer').find("table").length > 0){
table =$('#someContainer').find("table");
}else{
table = $('<table></table>').addClass('foo');
}
for (i = 0; i < 10; i++) {
var row = $('<tr></tr>');
for (i = 0; i < 10; i++) {
var row1 = $('<td></td>').addClass('bar').text('result ' + i);
table.append(row);
row.append(row1);
}
}
$('#someContainer').append(table);
});
});
try this one DEMO
Upvotes: 0
Reputation: 2647
try this
$(function() {
$("#addProduct").click(function() {
if($('#someContainer table').length > 0)
{
var row = $('<tr></tr>');
for(i=0; i<10; i++){
var row1 = $('<td></td>').addClass('bar').text('result ' + i);
row.append(row1);
}
$('#someContainer table').append(row);
}
else
{
var table = $('<table></table>').addClass('foo');
for(i=0; i<10; i++){
var row = $('<tr></tr>');
for(i=0; i<10; i++){
var row1 = $('<td></td>').addClass('bar').text('result ' + i);
table.append(row);
row.append(row1);
}
}
$('#someContainer').append(table);
}
});
});
live demo here.
Upvotes: 2
Reputation: 56501
If you want to execute it for only once try using .one() in jQuery.
$(function () {
$("#addProduct").one("click", function () {
var table = $('<table></table>').addClass('foo');
for (i = 0; i < 10; i++) {
var row = $('<tr></tr>');
for (i = 0; i < 10; i++) {
var row1 = $('<td></td>').addClass('bar').text('result ' + i);
table.append(row);
row.append(row1);
}
}
$('#someContainer').append(table);
});
});
Check JSFiddle.
Upvotes: 0