テーブルに行/セルを正常に追加し、配列からそれらを設定する関数を作成しました。問題は、それらがテーブルの一番上に追加されていることです。
ラインが var row = tbody.insertRow(r);
...私は思う/願っています。
以下のリンクで見る機能は appendTable(id)
上部に追加する実際の例を次に示します。 http://jsfiddle.net/JEAkX/4/
私はこのようなことがうまくいくと思っていました: var row = insertRow(r).appendTo("tbody>tr:last");
しかし、それは機能を壊しただけです。
私はまた、多くの異なる組み合わせを試しました .append()
そして .appendTo()
同じ行で成功しませんでした。 最後の溝の努力として、私はラインのバリエーションを試しましたcell.innerHTML = "<input type="text" size="1" value="" + subset[i++] + "" />"
でもその時までに場所は決まっていると思います。
例から抽出した関数は次のとおりです。
function appendTable(id)
{
var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
var i = 0;
for (var r = 0; r < 2; r++) {
var row = tbody.insertRow(r);
for (var c = 0; c < 4; c++) {
var cell = row.insertCell(c);
cell.innerHTML = "<input type="text" size="1" value="" + subset[i++] + "" />"
}
}
}
私が試しなかった側で(失敗しました) insertAfter
ある時点で、ページの読み込み時に存在しなかったものでは使用できないことを読みました。
回答:
回答№1は1insertRow
指定されたインデックスに行を追加します。
そのパラメータ(r
コード内)がゼロの場合、テーブルの一番上に行が追加されます。 代わりにそれらを最後に追加するには、テーブルの現在の長さを開始点として使用します。
function appendTable(id)
{
var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
var length = tbody.rows.length;
for (var r = length; r < length + 1; r++) {
var row = tbody.insertRow(r);
// etc.
}
}
回答№2の場合は0
行の文字列を作成してtbodyに追加することは機能し、ドキュメントからは、appendTo()の使用目的のように見えます。
function appendTable(id)
{
var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
var i = 0;
for (var r = 0; r < 2; r++) {
var row = tbody.insertRow(r);
var rowtext = "<tr>";
for (var c = 0; c < 4; c++) {
rowtext += "<td><input type="text" size="1" value="x" /></td>";
}
rowtext += "</tr>";
$(rowtext).appendTo(tbody);
}
}