【发布时间】:2023-03-27 09:35:01
【问题描述】:
为了让我对this问题的回答更加灵活:
function invertDivs(parentDiv) {
var first = document.getElementById(parentDiv).firstChild;
console.log(first);
var second = document.getElementById(parentDiv).lastChild;
console.log(second);
document.getElementById(parentDiv).insertBefore(second, first);
}
<div id="parent">
<div id="first">Div 1</div>
<div id="second">Div 2</div>
</div>
<button onclick="invertDivs('parent');">Invert Divs</button>
但是,div 只是有时会反转,并非总是如此。
第一次点击按钮会在控制台上产生这个:
第二次点击:
点击几下后:
我对代码有什么问题感到困惑。我选择父 div 的第一个孩子,并为最后一个孩子做同样的事情。然后我只是在第一个 div 之前插入当前的第二个 div。这就是函数的结束。根据insertBefore 函数的要求,它们也是父 div 的直接子级。
【问题讨论】:
-
请记住,文本节点也是子节点。我猜你想改用
firstElementChild,或者childNodes[0]。 -
HTML中的每个空格都将被视为text node。当您摆脱 HTML 中的所有空格时,您可能不会遇到问题。但这是一种痛苦。相反,您需要检查nodeValue。1是元素节点,3是文本节点。因此,您需要添加额外的检查以避免处理1's。
标签: javascript html css