我想使用javascript而不是jQuery将tr
和td
附加到tbody
。目前我正在使用jquery .html()我想用Javascript更改它。
var arrStrData = [];
for (i = 0; i < objData.length; i++) {
arrStrData.push("<tr>");
arrStrData.push("<td>");
arrStrData.push(objData[i].FirstName);
arrStrData.push("</td>");
arrStrData.push("<td>");
arrStrData.push(objData[i].LastName);
arrStrData.push("</td>");
arrStrData.push("<td>");
arrStrData.push(objData[i].Gender);
arrStrData.push("</td>");
arrStrData.push("<td>");
arrStrData.push(objData[i].Country);
arrStrData.push("</td>");
arrStrData.push("<td>");
arrStrData.push(objData[i].Password);
arrStrData.push("</td>");
arrStrData.push("</tr>");
}
$("tbody").html(arrStrData.join(''));
答案 0 :(得分:1)
只有在只有一个tbody
元素时才会起作用(就像你的jQuery示例一样)。
document.getElementsByTagName("tbody")[0].innerHTML=arrStrData.join('');
您最好在id
或table
上使用tbody
定义document.getElementById()
。
答案 1 :(得分:1)
作为对当前代码的最小更改,您可以使用以下代码:
var div = document.createElement('div');
div.innerHTML = '<table><tbody>' + arrStrData.join('') + '</tbody></table>';
var tbody = document.getElementsByTagName('tbody')[0];
tbody.parentNode.replaceChild(
div.getElementsByTagName('tbody')[0], tbody
);
更通用的版本可能是:
var tbody = document.getElementsByTagName('tbody')[0];
var frag = document.createDocumentFragment();
var oRow = document.createElement('tr');
var oCell = document.createElement('td');
var propArray = ['FirstName','LastName','Gender',
'Country','Password'];
var row, cell, obj;
for (var i=0, iLen=objData.length; i<iLen; i++) {
row = oRow.cloneNode(false);
o = objData[i]
for (var j=0, jLen=propArray.length; j<jLen; j++) {
cell = oCell.cloneNode(false);
cell.appendChild(document.createTextNode(o[propArray[j]]));
row.appendChild(cell);
}
frag.appendChild(row);
}
tbody.appendChild(frag);
以上是您可以适应您的情况的一般方法。
答案 2 :(得分:0)
请参阅以下网址,了解使用原生javascript在表格中实施addRow。
答案 3 :(得分:0)
由于你已经在使用jQuery,为什么不使用它来帮助你,这就是它的全部内容。
var useKeys = ['FirstName', 'LastName', 'Gender', 'Country', 'Password'],
html = '';
for (var i = 0; i < objData.length; i++) {
var row = $(useKeys).map(function(value, key) {
var value = objData[i][key];
return '<td>' + (value == undefined ? '' : value) + '</td>';
}).get();
html += '<tr>' + row + '</tr>';
}
$('tbody').html(html);