Ну, согласно информации, которую я получил в вашем другом вопросе , вы можете изменить эту функцию на:
function appendTable(id)
{
var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
var i = 0;
var rows = tbody.rows;
for (var r = 0; r < 4; r++) {
var row = rows[r];
for (var c = 0; c < 4; c++) {
var cell = row.cells[c];
cell.firstChild.value = subset[i++]; // the only part changed
}
}
}
, когда ваш HTML выглядит так:
<table id="alphabetTable" border="1">
<thead>
<tr>
<th>Header1</th>
<th>Header2</th>
<th>Header3</th>
<th>Header4</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
</tr>
<tr>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
</tr>
<tr>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
<td><input type = "text" size="1" /></td>
</tr>
</tbody>
</table>
Как вы могли видеть, я полагаюсь на свойство firstChild
, однако оно может быть опасным, например, когда ваш HTML выглядит так:
<td> <input type = "text" size=1 /> </td>
, тогда по крайней мере FF возвращает <TextNode textContent=" ">
как firstChild.Чтобы не зависеть от этой проблемы, вы можете пойти с:
cell.getElementsByTagName("input")[0].value = subset[i++];
PS.Все, что я написал, было основано на информации, полученной из другого вопроса, если что-то не так - прокомментируйте, и я постараюсь измениться;)