Element#

Element.getAttributeNames()#

Metoda getAttributeNames() zwraca sekwencję zawierającą nazwy kwalifikowane ze wszystkich atrybutów w danym elemencie. Jeśli element nie posiada żadnego atrybutu to zwrócona zostanie pusta sekwencja.

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 attr_names = element.getAttributeNames();

gdzie poszczególne człony oznaczają:

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

  1. Zwróć nazwy kwalifikowane wszystkich atrybutów, zgodnie z kolejnością, znajdujących się w liście atrybutów skojarzonej z obiektem kontekstu, jeśli takowe istnieją, w przeciwnym razie zwróć pustą sekwencję.

Metoda getAttributeNames() w żaden sposób nie gwarantuje, że otrzymamy sekwencję z niepowtarzającymi się wartościami. Duplikaty mogą występować w sytuacji, kiedy operujemy na atrybutach o tej samej nazwie kwalifikowanej, ale z inną przestrzenią nazw.

Prosty przykład:

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

	<p>Pierwszy testowy akapit bez żadnych atrybutów.</p>
	<p>Drugi testowy akapit z atrybutami ustawianymi z poziomu skryptu:</p>
	<ul>
		<li>p.setAttributeNS("ns1", "a:test", "");</li>
		<li>p.setAttributeNS("ns1", "A:Test", "");</li>
		<li>p.setAttributeNS("ns1", "A:TEST", "");</li>
		<li>p.setAttributeNS("ns2", "a:test", "");</li>
		<li>p.setAttributeNS("ns2", "A:Test", "");</li>
		<li>p.setAttributeNS("ns2", "A:TEST", "");</li>
		<li>p.setAttributeNS("", "test2", "");</li>
		<li>p.setAttributeNS("", "Test2", "");</li>
		<li>p.setAttributeNS("", "TEST2", "");</li>
	</ul>

	<p style="color: blue;">Szczegółowe informacje dla poszczególnych akapitów:</p>
	<p id="info"></p>

	<script>

		function getInfoAttNames(desc, whatElement){

			var sequence = whatElement.getAttributeNames();
			info.innerHTML += desc
				+ "<br>" + "sequence: " + sequence
				+ "<br>" + "sequence.toString(): " + sequence.toString()
				+ "<br>" + "typeof sequence: " + typeof sequence
				+ "<br>" + "sequence.constructor: " + sequence.constructor
				+ "<br>" + "sequence.length: " + sequence.length
				+ "<br>" + "element.attributes.length: " + whatElement.attributes.length + "<br><br>";

		}

		var info = document.getElementById("info");
		var allP = document.getElementsByTagName("p");
		var p1 = allP[0];
		var p2 = allP[1];

		p2.setAttributeNS("ns1", "a:test", "");
		p2.setAttributeNS("ns1", "A:Test", "");
		p2.setAttributeNS("ns1", "A:TEST", "");
		p2.setAttributeNS("ns2", "a:test", "");
		p2.setAttributeNS("ns2", "A:Test", "");
		p2.setAttributeNS("ns2", "A:TEST", "");
		p2.setAttributeNS("", "test2", "");
		p2.setAttributeNS("", "Test2", "");
		p2.setAttributeNS("", "TEST2", "");

		getInfoAttNames("Sekwencji z pierwszego testowego akapitu:", p1);
		getInfoAttNames("Sekwencji z drugiego testowego akapitu:", p2);

	</script>

</html>

Na chwilę obecną jedynie przeglądarka Firefox zaimplementowała metodę getAttributeNames().

Metoda getAttributeNames() 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 Element : Node {
	sequence<DOMString> getAttributeNames();
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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