我多年前就遇到了這個問題,太。
的問題是,當您使用innerHTML
屬性添加HTML,每次更新後,底層引擎將關閉未關閉標籤(和修復等不良HTML)爲您服務。所以第二個線之後,<table>
和<tr>
標籤都自動關閉,之後的所有內容將只在表外進行寫操作。
方法1 (最簡單的方法)
用來存儲整個表中的HTML和一次更新所有的字符串。
var HTML = "<table border=1 width=100%><tr>";
for(j=1;j<=10;j++)
{
HTML += "<td align=center>"+String.fromCharCode(j+64)+"</td>";
}
HTML += "</tr></table>";
document.getElementById("outputDiv").innerHTML = HTML;
Fiddle
方法2 (更好的方法)
使用DOM函數
var table = document.createElement('table');
table.setAttribute('border','1');
table.setAttribute('width','100%')
var row = table.insertRow(0);
for(j=1; j<=10; j++){
var text = document.createTextNode(String.fromCharCode(j+64));
var cell = row.insertCell(j-1);
cell.setAttribute('align','center')
cell.appendChild(text);
}
document.getElementById("outputDiv").appendChild(table);
Fiddle
方法2增強 (該然而更好的方法)
使用CSS,而不是HTML屬性。後者通常按最新規格折舊。
一個很好的資源開始學習CSS是Mozilla Developer Network
Fiddle
方法3 (很長的路要走,但長期來看是最好的)
使用jQuery。
$('<table>').append('<tr>').appendTo('#outputDiv');
for(j=1; j<=10; j++)
$('<td>').text(String.fromCharCode(j+64)).appendTo('tr');
Fiddle
謝謝你這麼多:d – Jimmy
是我的榮幸,@Jimmy –