在不使用jquery的情况下对javascript中的div重新排序
假设我有html:在不使用jquery的情况下对javascript中的div重新排序,javascript,html,dom,Javascript,Html,Dom,假设我有html: <div id="1">1</div> <div id="2">2</div> <div id="3">3</div> 1 2. 3. 在javascript而不是jquery中,如何将这些div重新排序为: <div id="1">1</div> <div id="3">3</div> <div id="2">2</div>
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
1
2.
3.
在javascript而不是jquery中,如何将这些div重新排序为:
<div id="1">1</div>
<div id="3">3</div>
<div id="2">2</div>
1
3.
2.
您可以使用display:flex
和order
css(我不得不在id的数字前添加一个字母,因为我似乎不喜欢css)
.container{display:flex;flex direction:column}
#s1{顺序:1;}
#s2{顺序:3;}
#s3{顺序:2;}
1.
2.
3.
您可以使用display:flex
和order
css(我不得不在id的数字前添加一个字母,因为我似乎不喜欢css)
.container{display:flex;flex direction:column}
#s1{顺序:1;}
#s2{顺序:3;}
#s3{顺序:2;}
1.
2.
3.
重复问题给出的解决方案是不正确的,因为它们假设元素彼此相邻。但即使在这个简单的示例中,元素之间也有一个包含空格的文本节点
如果这两个元素没有嵌套,则可以使用此选项交换两个元素:
function swapElements (first, second) {
var tmpNode = document.createElement('div');
tmpNode.setAttribute('id', '_tmp');
var firstParent = first.parentNode;
firstParent.insertBefore(tmpNode, first);
second.parentNode.insertBefore(second, first);
firstParent.insertBefore(second, tmpNode);
firstParent.removeChild(tmpNode);
}
像这样使用它:
var first = document.querySelector('#1');
var second = document.querySelector('#2');
swapElements(first, second);
重复问题给出的解决方案是不正确的,因为它们假设元素彼此相邻。但即使在这个简单的示例中,元素之间也有一个包含空格的文本节点 如果这两个元素没有嵌套,则可以使用此选项交换两个元素:
function swapElements (first, second) {
var tmpNode = document.createElement('div');
tmpNode.setAttribute('id', '_tmp');
var firstParent = first.parentNode;
firstParent.insertBefore(tmpNode, first);
second.parentNode.insertBefore(second, first);
firstParent.insertBefore(second, tmpNode);
firstParent.removeChild(tmpNode);
}
像这样使用它:
var first = document.querySelector('#1');
var second = document.querySelector('#2');
swapElements(first, second);
什么订单。。。任意随机或特定。我想将第3部分移动到第1部分和第2部分之间。什么顺序。。。任意随机或特定。我想将div 3移动到div 1和div 2之间。tmpNode在这个过程中有什么用途?删除函数中的那个部分可以吗?tmpNode在这个过程中有什么用途?删除函数中的该部分可以吗?