使用DOM遍历表的问题
Problems with traversing table using DOM
我设法解决了使用DOM仅使用JavaScript遍历表行时遇到的一些问题,但遇到了两个障碍。我正在尝试创建一个表,其中每一行都有一组按钮,用于向上、向下或删除特定的行。我能够成功地使用.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对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 如何遍历包含对象的数组-javascript
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 遍历AngularJs中的对象
- JQuery 遍历当前 SELECT 值
- jQuery-数据提取问题(html遍历)
- Ionic和AngularJS中遍历视图的问题
- Javascript 中 DOM 遍历的第一个子节点问题
- 循环遍历具有空数据的数组列表时出现问题
- JQuery隐藏元素输入问题遍历
- 数组组合以解决遍历问题
- Internet Explorer / MS Edge浏览器在遍历xml数据时出现问题
- 如何遍历一系列问题和答案
- 在遍历json对象时有问题
- 遍历嵌套JavaScript对象和数组时出现问题
- 选择要显示和隐藏的元素,遍历问题!(jQuery)
- 使用DOM遍历表的问题