JavaScript 在 DOM 中移动元素

标签 javascript jquery dom

假设我有三个 <div>页面上的元素。如何交换第一个和第三个位置 <div> ? jQuery 很好。

最佳答案

没有必要为这种琐碎的任务使用库:

var divs = document.getElementsByTagName("div");   // order: first, second, third
divs[2].parentNode.insertBefore(divs[2], divs[0]); // order: third, first, second
divs[2].parentNode.insertBefore(divs[2], divs[1]); // order: third, second, first

这考虑到 getElementsByTagName 返回一个实时 NodeList,该 NodeList 会自动更新以反射(reflect) DOM 中元素被操作时的顺序。

您还可以使用:

var divs = document.getElementsByTagName("div");   // order: first, second, third
divs[0].parentNode.appendChild(divs[0]);           // order: second, third, first
divs[1].parentNode.insertBefore(divs[0], divs[1]); // order: third, second, first

如果您想尝试,还有其他各种可能的排列方式:

divs[0].parentNode.appendChild(divs[0].parentNode.replaceChild(divs[2], divs[0]));

例如:-)

关于JavaScript 在 DOM 中移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34564269/

相关文章:

javascript - 在 node.js 中转换 itune XML 播放列表时遇到问题

javascript - JavaScript 保证对象属性顺序吗?

html - 如何使用 Typescript 在 React 中扩展 HTML 属性

javascript - document.getElementbyId 在 IE 11 中不起作用

Javascript:计算租赁的剩余时间(然后是租金)(租金计算器)

javascript - 如何将电子表格中的所有数据捕获到谷歌表单

jquery - 在 Firefox 上以 js 结束时退出全屏视频?

jquery - 使用 setTimeout 滚动 div 的内容

javascript - 查找具有特定值的单元格并将类应用于同一行中的单元格

javascript - 在 JavaScript 中,在函数内部创建的未附加到 DOM 树的节点是否会导致空间困惑?