Element#

Element.getElementsByTagNameNS()#

Metoda getElementsByTagNameNS() zwraca kolekcję typu HTMLCollection ze wszystkimi potomkami typu Element o określonej przestrzeni nazw i nazwie lokalnej, którzy znajdują się w danym elemencie (zgodnie z porządkiem drzewa). W przypadku braku pasujących elementów zwrócona zostanie pusta kolekcja.

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 elements = element.getElementsByTagNameNS(namespace, localName);

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody getElementsByTagNameNS(namespace, localName) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Zwróć listę elementów z przestrzenią nazw namespace i nazwą lokalną localName dla obiektu kontekstu.

Wielkość znaków w przestrzeni nazw i nazwie lokalnej przeszukiwanych elementów oraz w argumentach przekazanych do metody ma znaczenie zarówno w dokumentach XML, jak i w dokumentach HTML.

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 getCollectionTagNameNS(whatNamespce, whatTagName){

			var newP = document.createElement("p"); // nie został dołączony do kontenera DIV dlatego zostanie pominięty
			newP.textContent = "Nowy akapit";
			var newUL = document.createElement("ul"); // nie został dołączony do kontenera DIV dlatego zostanie pominięty
			newUL.textContent = "Nowa lista UL";

			var contener = document.getElementById("contener"); // referencja do kontenera DIV

			if (contener.firstChild.tagName != "P"){
				var newP2 = document.createElementNS("", "P");
				newP2.textContent = "Nowy akapit bez przestrzeni nazw utworzony i dodany z poziomu skryptu.";
				contener.insertBefore(newP2, contener.firstChild);
			}

			var allElement = contener.getElementsByTagNameNS(whatNamespce, whatTagName); // pobranie kolekcji ze wszystkimi elementami
			var allElementLen = allElement.length;

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

			var result = "Interfejs kolekcji: " + allElement // [object HTMLCollection], Opera i Chrome [object NodeList]
				+ "<br>" + "Liczba węzłów: " + allElement.length;

			for(var i = 0; i < allElementLen; i++){

				var el = allElement[i];

				result += "<br><br>" + "Pobrany akapit: " + el.textContent
					+ "<br>" + "Właściwość localName: " + el.localName
					+ "<br>" + "Właściwość nodeName: " + el.nodeName
					+ "<br>" + "Właściwość tagName: " + el.tagName
					+ "<br>" + "Właściwość namespaceURI: " + el.namespaceURI;

			}

			info.innerHTML = result;

		}

	</script>

</head>

<body>
	<div id="contener">
		<p>Pierwszy akapit.</p>
		<P>Drugi akapit.</p>
		<P>Trzeci akapit.</P>

		<p>Kliknij przycisk <input type="button" value="getElementsByTagNameNS('*', 'p')" onclick="getCollectionTagNameNS('*', 'p')"> by pobrać wszystkie akapity p w kontenerze DIV (Czwarty akapit).</p>
		<p>Kliknij przycisk <input type="button" value="getElementsByTagNameNS('*', 'P')" onclick="getCollectionTagNameNS('*', 'P')"> by pobrać wszystkie akapity P w kontenerze DIV (Piąty akapit).</p>
		<p>Kliknij przycisk <input type="button" value="getElementsByTagNameNS('*', 'ul')" onclick="getCollectionTagNameNS('*', 'ul')"> by pobrać wszystkie listy ul w kontenerze DIV (Szósty akapit).</p>

		<p style="color: blue;">Szczegółowe informacje dla pobranej kolekcji (Siódmy akapit):</p>
		<span id="info"></span>
	</div>
</body>

</html>

Metoda getElementsByTagNameNS() została zdefiniowana także w interfejsie Document, dlatego może być bezproblemowo wywoływana na węzłach typu Document. Stosowanie metody będzie miało sens w dokumentach XML, gdzie można wymieszać ze sobą wiele języków XML, czyli mogą pojawić się elementy o tych samych nazwach lokalnych, ale w różnych przestrzeniach nazw. W przypadku dokumentów HTML z elementami w przestrzeni HTML najczęściej wystarczy standardowa metoda Element.getElementsByTagName().

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Element : Node {
	HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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