ParentNode.append()

La méthode ParentNode.append insère un ensemble d’objets Node ou DOMString après le dernier enfant de ParentNode. Les objets DOMString (c’est-à-dire les chaînes de caractères) sont insérés comme nœuds Text équivalents.

Différences avec Node.appendChild() :

  • ParentNode.append() vous permet également d’ajouter des objet DOMString, tandis que Node.appendChild() accepte seulement les objets Node.
  • ParentNode.append() n’a pas de valeur de retour, tandis que Node.appendChild() retourne l’objet Node ajouté.
  • ParentNode.append() peut ajouter plusieurs nœuds et chaînes, alors queNode.appendChild() peut seulement ajouter un nœud.

Syntaxe

[Throws, Unscopable]
void ParentNode.append((Node or DOMString)... nodes);

Paramètres

nodes
Un ensemble d’objets Node ou DOMString à insérer.

Exceptions

Exemples

Ajouter un élément

var parent = document.createElement("div");
var p = document.createElement("p");
parent.append(p);

console.log(parent.childNodes); // NodeList [ <p> ]

Ajouter du texte

var parent = document.createElement("div");
parent.append("Du texte");

console.log(parent.textContent); // "Du texte"

Ajouter un élément et du texte

var parent = document.createElement("div");
var p = document.createElement("p");
parent.append("Du texte", p);

console.log(parent.childNodes); // NodeList [ #text "Du texte", <p> ]

ParentNode.append() est unscopable

La méthode append() n’est pas accessible dans un bloc with. Voir Symbol.unscopables pour plus d’information.

var parent = document.createElement("div");

with(parent) {
  append("foo");
}
// ReferenceError: append is not defined 

Polyfill

Vous pouvez utiliser la méthode append() dans Internet Explorer 9 (et supérieur) avec le code suivant :

// 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]);

Spécification

Spécification Statut Commentaire
DOM
La définition de 'ParentNode.append()' dans cette spécification.
Standard évolutif Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
append
Expérimentale
Chrome Support complet 54Edge Support complet 17Firefox Support complet 49IE Aucun support NonOpera Support complet 39Safari Support complet 10WebView Android Support complet 54Chrome Android Support complet 54Firefox Android Support complet 49Opera Android Support complet 41Safari iOS Support complet 10Samsung Internet Android Support complet 6.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.

Voir également