MutationRecord#

MutationRecord.previousSibling#

Właściwość previousSibling zwraca brata poprzedzającego dla dziecka dodanego lub usuniętego z celu obserwacji. Jeśli dziecko nie posiada brata poprzedzają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 previous_sibling = mutationRecord.previousSibling;

gdzie poszczególne człony oznaczają:

Dla ułatwienia można założyć, że brat poprzedzają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 poprzedzający jest ustalany względem pierwszego 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 poprzedzający dla zmiany records[0].previousSibling: " + records[0].previousSibling
					+ "<br>" + "Dane tekstowe brata records[0].previousSibling.textContent: " + records[0].previousSibling.textContent
					+ "<br>" + "Rodzic brata poprzedzającego dla zmiany records[0].previousSibling.parentNode: " + records[0].previousSibling.parentNode;

			});

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

			observer.observe(document.body, config);

			document.body.appendChild(newDoc);

		}

	</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>
</body>

</html>

Właściwość previousSibling 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? previousSibling;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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