使用insertBefore()在javascript中重新排序表行

时间:2014-01-16 05:51:33

标签: javascript html dojo

我正在尝试使用JavaScript单击按钮来移动表格行。下面的代码没有改变行。还会显示insertBefore语句后的警告语句。

function MoveUp(x) {

    var RowLocation = x.id;
    var table = dojo.byId('dynamicTable');
    var rows = table.rows;

    if ((RowLocation > 0) && (RowLocation < (rows.length - 1))) {
        alert('inside if..'+ RowLocation);
        rows.insertBefore(rows[RowLocation],rows[RowLocation-1]);           
        alert('after shift..');
    }
}

任何人都可以帮忙找出错误吗?

1 个答案:

答案 0 :(得分:1)

您应该在新插入的节点的父节点上调用insertBefore(而不是table.rows):

var parentNode = rows[RowLocation].parentNode;
parentNode.insertBefore(rows[RowLocation], rows[RowLocation - 1]); 

See here:

var insertedElement = parentElement.insertBefore(newElement, referenceElement);

使用以下内容向下移动一行:

var parentNode = rows[RowLocation].parentNode;
parentNode.insertBefore(rows[RowLocation], rows[RowLocation + 1].nextSibling)