Element.replaceWith()

Remplace un élément du document par d’autres éléments ou du texte. L’ancien élément est retiré de la page.

Renvoie
undefined
Modifie l’original
Oui
Sur cette page

Exemple

#
JavaScript
const buyButton = document.querySelector('#buy')

const badge = document.createElement('span')
badge.className = 'badge'
badge.textContent = 'Acheté ✓'

buyButton.replaceWith(badge)

console.log(buyButton.isConnected)
console.log(document.querySelector('.card').lastElementChild)
console.log(document.querySelector('#buy'))
Console
false
<span class="badge">
null

Définition et utilisation

#

La méthode replaceWith() insère les nœuds ou les chaînes donnés à la place de l’élément, et retire l’élément lui-même du document. Le nouveau contenu atterrit exactement là où était l’ancien élément : il a le même parent et les mêmes voisins.

Elle accepte un nombre quelconque d’arguments, donc vous pouvez remplacer un élément par plusieurs. Les chaînes sont insérées comme du texte brut, et non comme du HTML, tout comme dans append(). Si vous passez un élément déjà présent sur la page, il sera déplacé à son nouvel emplacement.

L’élément remplacé ne disparaît pas de la mémoire. Tant que vous en gardez une référence dans une variable, vous pouvez le restaurer plus tard, par ex. avec un nouvel appel à replaceWith(). L’ancienne façon de faire la même chose est parent.replaceChild(nouveau, ancien), qui exige une référence au parent et accepte les arguments dans un ordre moins intuitif.

Syntaxe

#
Syntaxe
element.replaceWith(node1, node2, …)
element.replaceWith(text)

Paramètres

#
  • node1…nodeN

    éléments ou chaînes

    Les nœuds ou les chaînes qui prendront la place de l’élément, dans l’ordre indiqué.

Plus d’exemples

#
Plusieurs nœuds à la place d’un seul
JavaScript
const status = document.querySelector('#status')
const points = document.createElement('strong')
points.textContent = '340 pts'

status.replaceWith('7 leçons terminées, ', points)

const paragraph = document.querySelector('p')
console.log(paragraph.textContent)
console.log(paragraph.innerHTML)
Console
Statut : 7 leçons terminées, 340 pts
Statut : 7 leçons terminées, <strong>340 pts</strong>
Mode édition : le texte remplacé par un champ, puis restauré
JavaScript
const title = document.querySelector('#title')
const input = document.createElement('input')
input.value = title.textContent

title.replaceWith(input)
console.log(document.querySelector('#title'))

input.value = 'Note sur les boucles'
title.textContent = input.value
input.replaceWith(title)

console.log(document.querySelector('#title').textContent)
Console
null
Note sur les boucles

Après le remplacement, le titre n’est plus dans le document, mais la variable title le conserve toujours. Il peut ainsi revenir à sa place avec le nouveau texte après l’édition.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Vous appelez replaceWith() sur l’élément qui doit disparaître. Vous n’avez pas besoin d’une référence au parent, contrairement à replaceChild().
  • Les chaînes sont insérées comme du texte. Si le nouveau contenu doit être du code HTML, construisez les éléments avec createElement(), ou insérez le code avec insertAdjacentHTML() et supprimez seulement ensuite l’ancien élément.
  • Conservez une référence à l’ancien élément dans une variable si vous devrez le restaurer, par ex. en quittant le mode édition.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.