gpt4 book ai didi

javascript - 使用DOM遍历表的问题

转载 作者:行者123 更新时间:2023-11-28 02:26:16 25 4
gpt4 key购买 nike

我设法解决了仅使用 JavaScript 通过 DOM 遍历表行时遇到的一些问题,但遇到了 2 个障碍。我正在尝试创建一个表格,其中每一行都有一组按钮来向上、向下移动或删除该特定行。我能够成功使用 .replaceChild 方法,但它替换了行而不是仅仅交换它们。当我尝试 .moveRow 时,我不断收到错误消息,指出 HTML 表格部分没有该方法。当尝试将当前行与下面的行交换时,我遇到了同样的问题。有什么建议吗?

function up(x){

// var tableBody = document.getElementsByTagName("tbody")[0]; // tried it with tableBody and it still didn't work
var table = x.parentNode.parentNode.parentNode;
var tableRow = x.parentNode.parentNode.cloneNode(true);
var previousRow = x.parentNode.parentNode.previousSibling.cloneNode(true);
table.replaceChild(tableRow,x.parentNode.parentNode.previousSibling);

}

function down(x){
var table = x.parentNode.parentNode.parentNode;
var tableRow = x.parentNote.parentNode.cloneNode(true);
var belowRow = x.parentNode.parentNode.nextSibling.cloneNode(true);
table.moveRow(tableRow,x.parentNode.parentNode.nextSibling);
}

我的按钮:

<table id="table1" border="1">
<tbody>
<tr>
<th>Column 1</th> <th>Column 2</th> <th>Column 3</th> <th>Column 4</th>
</tr>
<tr id="enterData">
<td id="buttons">
<input type="button" value="Up" onclick="up(this)" />
<input type="button" value="Down" onclick="down(this)" />
</td>
</tr>
</tbody>
</table>

最佳答案

您可以使用 insertBefore 向上或向下移动行,并使用 appendChild 最后一行,我也使用 *ElementSibling 来避免文本节点问题,但这可能会导致兼容性问题。

function up(x){
var row = x.parentNode.parentNode;
var table = row.parentNode;
//Don't move up over the header
if (row.previousElementSibling && row.previousElementSibling.previousElementSibling){
table.insertBefore(row,row.previousElementSibling);
}
}
function down(x){
var row = x.parentNode.parentNode;
var table = row.parentNode;
//can't use insertBefore for last row.
if (row.nextElementSibling && row.nextElementSibling.nextElementSibling){
table.insertBefore(row,row.nextElementSibling.nextElementSibling);
}
else{
table.appendChild(row);
}
}

DEMO

关于javascript - 使用DOM遍历表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com