ParentNode.append()
method inserts a set of
节点
对象或
DOMString
objects after the last child of the
ParentNode
.
DOMString
objects are inserted as equivalent
文本
节点。
Differences from
Node.appendChild()
:
ParentNode.append()
allows you to also append
DOMString
objects, whereas
Node.appendChild()
only accepts
节点
对象。
ParentNode.append()
has no return value, whereas
Node.appendChild()
returns the appended
节点
对象。
ParentNode.append()
can append several nodes and strings, whereas
Node.appendChild()
can only append one node.
// [Throws, Unscopable] ParentNode.append(...nodesOrDOMStrings) // returns undefined
HierarchyRequestError
: Node cannot be inserted at the specified point in the hierarchy.
let parent = document.createElement("div")
let p = document.createElement("p")
parent.append(p)
console.log(parent.childNodes) // NodeList [ <p> ]
let parent = document.createElement("div")
parent.append("Some text")
console.log(parent.textContent) // "Some text"
let parent = document.createElement("div")
let p = document.createElement("p")
parent.append("Some text", p)
console.log(parent.childNodes) // NodeList [ #text "Some text", <p> ]
append()
method is not scoped into the
with
statement. See
Symbol.unscopables
了解更多信息。
let parent = document.createElement("div")
with(parent) {
append("foo")
}
// ReferenceError: append is not defined
You can polyfill the
append() method
in Internet Explorer 9 and higher with the following code:
// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/append()/append().md
(function (arr) {
arr.forEach(function (item) {
if (item.hasOwnProperty('append')) {
return;
}
Object.defineProperty(item, 'append', {
configurable: true,
enumerable: true,
writable: true,
value: function append() {
var argArr = Array.prototype.slice.call(arguments),
docFrag = document.createDocumentFragment();
argArr.forEach(function (argItem) {
var isNode = argItem instanceof Node;
docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
});
this.appendChild(docFrag);
}
});
});
})([Element.prototype, Document.prototype, DocumentFragment.prototype]);
| 规范 | 状态 | 注释 |
|---|---|---|
|
DOM
The definition of 'ParentNode.append()' in that specification. |
实时标准 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
append
|
Chrome 54 | Edge 17 | Firefox 49 | IE No | Opera 39 | Safari 10 | WebView Android 54 | Chrome Android 54 | Firefox Android 49 | Opera Android 41 | Safari iOS 10 | Samsung Internet Android 6.0 |
完整支持
不支持
实验。期望将来行为有所改变。
ParentNode
and
ChildNode
ParentNode.prepend()
Node.appendChild()
ChildNode.after()
Element.insertAdjacentElement()
NodeList
ParentNode
AbortController
AbortSignal
AbstractRange
Attr
ByteString
CDATASection
CSSPrimitiveValue
CSSValue
CSSValueList
CharacterData
ChildNode
注释
CustomEvent
DOMConfiguration
DOMError
DOMErrorHandler
DOMException
DOMImplementation
DOMImplementationList
DOMImplementationRegistry
DOMImplementationSource
DOMLocator
DOMObject
DOMParser
DOMPoint
DOMPointInit
DOMPointReadOnly
DOMRect
DOMString
DOMTimeStamp
DOMTokenList
DOMUserData
Document
DocumentFragment
DocumentType
元素
ElementTraversal
Entity
EntityReference
事件
EventTarget
HTMLCollection
MutationObserver
节点
NodeFilter
NodeIterator
NodeList
NonDocumentTypeChildNode
ProcessingInstruction
PromiseResolver
范围
StaticRange
文本
TextDecoder
TextEncoder
TimeRanges
TreeWalker
TypeInfo
USVString
UserDataHandler
XMLDocument