Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript将数据移动到顶部或底部_Javascript - Fatal编程技术网

使用Javascript将数据移动到顶部或底部

使用Javascript将数据移动到顶部或底部,javascript,Javascript,好的,刚刚被分配到一个新项目,以前从未处理过Javascript。现在,数据在网格中上下移动,代码如下。我需要在case语句中添加一个“top”和“bottom”,用户可以将所选行移动到网格的顶部或底部。我试图用谷歌搜索答案,但运气不太好。任何关于我可以在哪里继续搜索的建议都会很有帮助 好的,新的一期。我添加了一些我创建的代码。在“top”和“bottom”下的case语句中,我添加的代码允许我选择一个项目并将其移动到列表的最顶端。但是把它移到底部,IE告诉我脚本需要很长时间。有什么建议吗 没关

好的,刚刚被分配到一个新项目,以前从未处理过Javascript。现在,数据在网格中上下移动,代码如下。我需要在case语句中添加一个“top”和“bottom”,用户可以将所选行移动到网格的顶部或底部。我试图用谷歌搜索答案,但运气不太好。任何关于我可以在哪里继续搜索的建议都会很有帮助

好的,新的一期。我添加了一些我创建的代码。在“top”和“bottom”下的case语句中,我添加的代码允许我选择一个项目并将其移动到列表的最顶端。但是把它移到底部,IE告诉我脚本需要很长时间。有什么建议吗

没关系,我让代码工作了。下面是工作代码

function move(direction) {
try {
    if (CSAdmin.selectedItem.element &&
CSAdmin.selectedItem.ID) {
        var row = CSAdmin.selectedItem.element;
        var node =
    getNode(CSAdmin.selectedItem.type, CSAdmin.selectedItem.ID);
        if (node) {
            var sibling = null;
            var rowSibling = null;
            var parent = node.parentNode;
            var rowParent = row.parentNode;
            switch (direction) {
                case "up":
                    {
                        sibling = node.previousSibling;
                        if (sibling) {
                            parent.removeChild(node);
                            parent.insertBefore(node, sibling);
                        }
                        //Move the table row 
                        rowSibling = row.previousSibling;
                        if (rowSibling) {
                            rowParent.removeChild(row);
                            rowParent.insertBefore(row, rowSibling);
                        }
                        break;
                    }
                case "down":
                    {
                        sibling = node.nextSibling;
                        if (sibling) {
                            parent.removeChild(sibling);
                            parent.insertBefore(sibling, node);
                        }
                        //Move the table row if it isn't the insert row
                        rowSibling = row.nextSibling;
                        if (rowSibling && rowSibling.id.indexOf("new", 0) == -1) {
                            rowParent.removeChild(rowSibling);
                            rowParent.insertBefore(rowSibling, row);
                        }
                        break;
                    }
                    case "top":
                    {
                        sibling = node.previousSibling;
                        while (sibling) {
                            if (sibling) {
                                parent.removeChild(node);
                                parent.insertBefore(node, sibling);
                                sibling = node.previousSibling;
                            }
                        }
                        //Move the table row 
                        rowSibling = row.previousSibling;
                        while (rowSibling) {
                            if (rowSibling) {
                                rowParent.removeChild(row);
                                rowParent.insertBefore(row, rowSibling);
                                rowSibling = row.previousSibling;
                            }
                        }
                        break;
                    }
                case "bottom":
                    {
                        sibling = node.nextSibling;
                        while (sibling) {
                            if (sibling) {
                                parent.removeChild(sibling);
                                parent.insertBefore(sibling, node);
                                sibling = node.nextSibling;
                            }
                        }
                        //Move the table row if it isn't the insert row
                        rowSibling = row.nextSibling;
                        while (rowSibling && rowSibling.id.indexOf("new", 0) == -1) {
                            if (rowSibling && rowSibling.id.indexOf("new", 0) == -1) {
                                rowParent.removeChild(rowSibling);
                                rowParent.insertBefore(rowSibling, row);
                                rowSibling = row.nextSibling;
                            }
                        }
                        break;
                    }
            }
        }
    }
}
catch (err) {
    throw new Error("Error moving row:" + err.description);
}

现有代码中的变量名有点混乱(您甚至没有告诉我们什么是
节点
),但这是使其工作的基本前提。在本例中,我使用jQuery简化了工作,但逻辑是合理的,不依赖于jQuery

移动到底部基本上是一样的,只是需要lastRow和insertAfter

var lastRow = currentRow.parentNode.childNodes[currentRow.parentNode.childNodes.length - 1];
currentRow.parentNode.insertAfter(currentRow, lastRow);

我真的不明白你的问题。请添加一个您正在尝试实现的/您已经拥有的示例。我拥有的是datagrid。如果您选择一行并点击向上或向下按钮,您可以一次向上或向下移动一行。我想添加一个“移动到顶部”和“移动到底部”按钮,将该行移动到网格顶部或底部。上面的代码当前将一次向上或向下移动一行。很抱歉造成混淆,这不是我的代码。它属于不再在这里的开发人员。我正试着自己弄清楚这一切。从我可以看出,node的selectedItem类型和ID很小。我只基于这一行var node=getNode(CSAdmin.selectedItem.type,CSAdmin.selectedItem.ID);这不是一个完全正确的答案,但它是下一个基于它的东西,它让我知道javascript在做什么,并让我意识到如何正确地做。
var lastRow = currentRow.parentNode.childNodes[currentRow.parentNode.childNodes.length - 1];
currentRow.parentNode.insertAfter(currentRow, lastRow);