Orlok: eine ID mit einem Event verknüpfen

Beitrag lesen

Hallo

Die Anzahl der Kindknoten des Elementes wird sich ja nicht auf magische Art und Weise von selbst ändern, weshalb es vermutlich eine bessere Lösung als die hier vorgestellte gibt, um auf die Änderungen zu reagieren.

const element = document.getElementById('name');

const observer = new MutationObserver(function (records, observer) {
  console.log('Hello World');
});

observer.observe(element, {
  childList: true
});

const text = document.createTextNode('string');

element.appendChild(text); // Hello World

Mit MutationObservern ist es jedenfalls möglich, DOM-Nodes zu überwachen. Dem Konstruktor wird dabei eine Callback-Funktion übergeben, die bei einer Änderung automatisch aufgerufen wird, ähnlich wie bei der Behandlung von gewöhnlichen Ereignissen.

Um die Überwachung zu starten ist die Methode observe der MutationObserver-Instanz mit zwei Argumenten aufzurufen. Das erste Argument ist eine Referenz auf das Element das überwacht werden soll, das zweite ist ein Objekt, über dessen Eigenschaften festgelegt werden kann, auf welche Art von Veränderungen reagiert werden soll.

Letzteres ist in deinem Beispiel die Liste der Kindknoten des Elements, weshalb hier die Eigenschaft childList des Konfigurationsobjektes auf true zu setzen wäre.

Wird nun wie in dem Beispiel oben ein Element oder ein Textknoten hinzugefügt oder entfernt, dann wird die Callback-Funktion aufgerufen, in der ich hier nur den Hallo-Welt-Text ausgeben lasse.

Hier könntest du dann die Eigenschaft length von childNodes überprüfen und die Ausgabe von der nun aktuellen Anzahl der Kindknoten abhängig zu machen.

Eine etwas ausführliche Beschreibung findest du hier. Aber wie gesagt, es gibt womöglich eine bessere Lösung für das Problem. Dafür müsstest du allerdings etwas genauer beschreiben worum es geht.

Gruß,

Orlok