【发布时间】:2011-08-18 11:22:05
【问题描述】:
如何将 childNode 附加到 javascript 中的特定位置?
我想将 childNode 添加到 div 的第三个位置。它后面还有其他节点需要向后移动(3变成4等等)
【问题讨论】:
标签: javascript dom parent-child
如何将 childNode 附加到 javascript 中的特定位置?
我想将 childNode 添加到 div 的第三个位置。它后面还有其他节点需要向后移动(3变成4等等)
【问题讨论】:
标签: javascript dom parent-child
你可以使用.insertBefore():
parentElement.insertBefore(newElement, parentElement.children[2]);
【讨论】:
parentElement.children而不是parentElement.childNodes吗?前者仅列出 Elements 的子节点,因此忽略 Texts 的节点,例如...假设子节点可能包含所有类型的节点不是更好吗???跨度>
<ol> 中使用列表项<li> 时,您不希望将空格缩进算作子项(假设HTML文件很漂亮)。
为此,您有 3 个选项 .insertBefore()、.insertAdjacentElement() 或 .insertAdjacentHtml()
var insertedElement = parentElement.insertBefore(newElement, referenceElement);
在你的情况下,你可以像 Felix Kling answer 那样做
var insertedElement = parentElement.insertBefore(newElement, parentElement.children[2]);
referenceElement.insertAdjacentElement (where, newElement);
在你的情况下是
parentElement.children[1].insertAdjacentElement("afterEnd", newElement);
referenceElement.insertAdjacentElement (where, newElementHTML);
在你的情况下是
parentElement.children[1].insertAdjacentElement("afterEnd", "<td>newElementHTML</td>");
【讨论】:
简化,
Element.prototype.insertChildAtIndex = function(child, index) {
if (!index) index = 0
if (index >= this.children.length) {
this.appendChild(child)
} else {
this.insertBefore(child, this.children[index])
}
}
那么,
var child = document.createElement('div')
var parent = document.body
parent.insertChildAtIndex(child, 2)
多田!
在扩展原生代码时要注意could be troublesome
【讨论】: