MutationRecord#

MutationRecord.nextSibling#

Właściwość nextSibling zwraca brata następującego dla dziecka dodanego lub usuniętego z celu obserwacji. Jeśli dziecko nie posiada brata następującego lub zmiana nie dotyczy dodawania lub usuwania dzieci to zwrócona zostanie wartość null. Właściwość jest tylko do odczytu.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var next_sibling = mutationRecord.nextSibling;

gdzie poszczególne człony oznaczają:

Dla ułatwienia można założyć, że brat następujący zapisywany jest przed wykonaniem zmian w celu obserwacji (przy usuwaniu węzłów) lub po wykonaniu zmian w celu obserwacji (przy dodawaniu węzłów). Jeśli zmiana obejmuje dodanie lub usunięcie wielu dzieci w jednym kroku, to brat następujący jest ustalany względem ostatniego dodawanego lub usuwanego dziecka.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<!DOCTYPE html>
<html>

<head>

	<script>

		function addElement(localName){

			var newDoc = document.createDocumentFragment(); // operujemy fragmentem dokumentu

			var newElement1 = document.createElement(localName);
			newElement1.textContent = "Treść nowego elementu " + newElement1.tagName + " (dziecko1).";
			newDoc.appendChild(newElement1);

			if (localName == "DIV"){

				var newElement2 = document.createElement(localName);
				newElement2.textContent = "Treść nowego elementu " + newElement2.tagName + " (dziecko2).";
				newDoc.appendChild(newElement2);

				var newElement3 = document.createElement("b");
				newElement3.textContent = " Treść nowego elementu " + newElement3.tagName + " (potomek w dziecko2).";
				newElement2.appendChild(newElement3);

			}

			var observer = new MutationObserver(function(records, observer){

				var info = document.getElementById("info");

				info.innerHTML = "Zarejestrowano zmiany węzła BODY"
					+ "<br>" + "Liczba zmian records.length: " + records.length
					+ "<br><br>" + "Interfejs records[0]: " + records[0]
					+ "<br>" + "Brat następujący dla zmiany records[0].nextSibling: " + records[0].nextSibling
					+ "<br>" + "Dane tekstowe brata records[0].nextSibling.data: " + records[0].nextSibling.data
					+ "<br>" + "Rodzic brata następującego dla zmiany records[0].nextSibling.parentNode: " + records[0].nextSibling.parentNode;

			});

			var config = {
				attributes: true,
				childList: true,
				characterData: true
			};

			observer.observe(document.body, config);

			// Nowe węzły dodawane są przed ostatnim dzieckiem w BODY
			document.body.insertBefore(newDoc, document.body.lastChild);

		}

	</script>

</head>

<body>
	<p>Do ciała dokumentu (BODY) dodawany jest obserwator zmian z DOM4.</p>
	<p>Kliknij konkretny przycisk by utworzyć i dodać nowe elementy do dokumentu.</p>
	<input type="button" value="createElement('p')" onclick="addElement('p')">
	<input type="button" value="createElement('DIV')" onclick="addElement('DIV')">

	<p style="color: blue;">Szczegółowe informacje odczytane z obserwatora zmian:</p>
	<p id="info"></p>
	<p style="color: blue;">Nowe elementy dodane do dokumentu:</p>
	Ostatnie dziecko w BODY jest węzłem tekstowym.
</body>

</html>

Właściwość nextSibling pojawia się dopiero w specyfikacji DOM4.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface MutationRecord {
	readonly attribute Node? nextSibling;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

MutationRecord (H1) MutationRecord.nextSibling (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)