行の位置に基づいて、テーブルを 2 つのテーブルに分割したいと考えています。テーブルの行位置を見つける方法があります。今私の要件は、javascript のみを使用してテーブルを 2 つのテーブルに分割することです。
質問する
3368 次
2 に答える
2
それが役に立てば幸い:
function splitTableIntoTwoTables(table, idx) {
var rows = table.getElementsByTagName("tr"),
newtable = table.cloneNode(false),
tbody = document.createElement("tbody");
if (table.hasAttribute("id")) {
newtable.setAttribute("id", "splitted_"+table.getAttribute("id"));
}
for (var i = rows.length - 1; i > idx; i--) {
if (tbody.childNodes) {
tbody.insertBefore(rows[i].cloneNode(true), tbody.lastChild);
} else {
tbody.appendChild(rows[i].cloneNode(true));
}
table.deleteRow(i);
}
newtable.appendChild(tbody);
var p = document.createElement("p");
p.appendChild(document.createTextNode("=============>"));
if (table.nextSibling) {
table.parentNode.insertBefore(p, table.nextSibling);
} else {
table.parentNode.appendChild(p);
}
if (p.nextSibling) {
table.parentNode.insertBefore(newtable, p.nextSibling);
} else {
table.parentNode.appendChild(newtable);
}
}
于 2013-04-12T15:05:56.560 に答える
1
私のバリアントを試してください。tbody の有無にかかわらずテーブルで機能します。テーブルと行のインデックスを取り、その後分割されます。
function split(table, index){
var temp, clone = table.cloneNode(false),
trs = table.getElementsByTagName('tr'),
tbodies = table.getElementsByTagName('tbody');
if (++index>=trs.length) return;
if (clone.id) clone.id+='-clone';
while (index>0) {
if(tbodies[0] && (temp = tbodies[0].getElementsByTagName('tr').length) <= index) {
index -= temp;
clone.appendChild(tbodies[0]);
} else {
temp|0 && (temp = tbodies[0] ? clone.appendChild(tbodies[0].cloneNode(false)) : clone);
temp.appendChild(trs[0]);
index--;
}
}
table.parentNode.insertBefore(clone, table);
};
于 2013-04-12T17:57:24.183 に答える