[英]what's the easiest method to append a TR to a table by javascript?
如果表ID是已知的-則可以通過docoument.getElementById(table_id)
獲得docoument.getElementById(table_id)
-如何以最簡單的方式將TR元素附加到該表?
TR如下:
<tr><td><span>something here..</span></td></tr>
第一個使用DOM方法,第二個使用非標准但廣泛支持的innerHTML
var tr = document.createElement("tr");
var td = document.createElement("td");
var span = document.createElement("span");
var text = document.createTextNode("something here..");
span.appendChild(text);
td.appendChild(span);
tr.appendChild(td);
tbody.appendChild(tr);
要么
tbody.innerHTML += "<tr><td><span>something here..</span></td></tr>"
使用jQuery:
$('#table_id > tbody').append('<tr><td><span>something here..</span></td></tr>');
我知道有些人可能不願提及jQuery。 包括一個僅做一件事情的框架可能就太過分了。 但是我很少發現我只需要對javascript做“一件事”。 手工編碼的解決方案是創建所需的每個元素,然后以適當的順序(從內部到外部)將它們添加到其他元素,然后最后將新行添加到表中。
插入表行的最直接,符合標准和與庫無關的方法是使用表對象的insertRow方法 。
var tableRef = document.getElementById(tableID);
// Insert a row in the table at row index 0
var newRow = tableRef.insertRow(0);
PS也可以在IE6中使用,盡管有時可能會有一些古怪之處。
如果您不反對使用jQuery,則可以使用以下任一方法,其中“ tblId”是表的ID,“ _ html”是表行的字符串表示形式:
$(_html).insertAfter("#tblId tr:last");
要么
$("#tblId tr:last").after(_html);
真正簡單的例子:
<html>
<table id = 'test'>
<tr><td>Thanks tvanfosson!</td></tr>
</table>
</html>
<script type="text/javascript" charset="utf-8">
var table = document.getElementById('test');
table.innerHTML += '<tr><td><span>something here..</span></td></tr>';
</script>
我使用此功能將一堆行附加到表中。 它比jquery快100%左右,可處理大量數據。 唯一的缺點是,如果您的行中包含腳本標簽,則這些腳本不會在IE中加載時執行
function appendRows(node, html){
var temp = document.createElement("div");
var tbody = node.parentNode;
var nextSib = node.nextSibling;
temp.innerHTML = "<table><tbody>"+html;
var rows = temp.firstChild.firstChild.childNodes;
while(rows.length){
tbody.insertBefore(rows[0], nextSib);
}
}
其中node是要追加的行,而html是要追加的行
我用它,工作輕柔:
var changeInnerHTMLOfMyCuteTbodyById = function (id_tbody, inner_html)
{
//preparing
var my_tbody = document.getElementById (id_tbody);
var my_table = my_tbody.parentNode;
my_table.removeChild (my_tbody);
//creating dom tree
var html = '<table style=\'display:none;\'><tbody id='+ id_tbody+'>' +
inner_html + '</tbody></table>';
var tmp_div = document.createElement ('div');
tmp_div.innerHTML = html;
document.body.appendChild (tmp_div);
//moving the tbody
my_table.appendChild (document.getElementById (id_tbody));
}
你可以這樣做:
changeInnerHTMLOfMyCuteTbodyById('id_tbody', document.getElementById ('id_tbody').innerHTML + '<tr> ... </tr>');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.