使用javascript根据行位置将表拆分为两个

时间:2012-12-19 09:43:05

标签: javascript

我想根据行位置将表拆分为两个表。我有办法找到表的行位置。现在我的要求是仅使用javascript将表拆分为两个表。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

请试试我的变种。适用于有或没有tbodies的表。它需要一个表和一个行索引,之后它将被分割。

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);
};