Element#

Element.removeAttributeNS()#

Metoda removeAttributeNS() usuwa atrybutu o określonej przestrzeni nazw i nazwie lokalnej w danym elemencie.

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. #
element.removeAttributeNS(namespace, localName);

gdzie poszczególne człony oznaczają:

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

  1. Usuń atrybut poprzez przestrzeń nazw i nazwę lokalną z przekazaniem namespace, localName i obiektu kontekstu, a następnie zwróć wartość undefined.

Alternatywnie można skorzystać z podobnie działającej metody NamedNodeMap.removeNamedItemNS(). Trzeba jedynie pamiętać o możliwości zrzucenia przez nią błędu oraz o zwracaniu referencji do usuniętego atrybutu.

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>

		window.onload = function(){

			p = document.getElementsByTagName("p")[0]; // referencja do akapitu

			p.setAttributeNS("ns1", "ID", "Test1");
			p.setAttribute("id", "Identyfikator");
			p.setAttributeNS("ns2", "A:NEW", "Test2");

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

		}

		function listAllAttr(){

			var allAttr = p.attributes;

			for (var i = 0; i < allAttr.length; i++){

				var attr = allAttr[i];
				info.innerHTML += "<br>" + attr.namespaceURI + " , " + attr.prefix + " , " +  attr.name + " , " + attr.value;

			}

		}

		function delAttr(namespace, localName){

			info.innerHTML =  "Liczba atrybutów w akapicie (przed usunięciem): " + p.attributes.length + "<br>";

			listAllAttr();

			info.innerHTML += "<br><br>" + "Metoda removeAttributeNS('" + namespace + "','" + localName + "'): " + p.removeAttributeNS(namespace, localName)
					+ "<br><br>" + "Liczba atrybutów w akapicie (po usunięciu): " + p.attributes.length + "<br>";

			listAllAttr();

		}

	</script>

</head>

<body>
	<p>Akapit z atrybutami ustawianymi z poziomu skryptu:</p>
	<ul>
		<li>p.setAttributeNS("ns1", "ID", "Test1");</li>
		<li>p.setAttribute("id", "Identyfikator");</li>
		<li>p.setAttributeNS("ns2", "A:NEW", "Test2");</li>
	</ul>

	<p>Kliknij przycisk by usunąć atrybut o określonej przestrzeni nazw i nazwie lokalnej z akapitu.</p>
	<input type="button" value="removeAttribute('ns1','ID')" onclick="delAttr('ns1','ID')">
	<input type="button" value="removeAttribute('','ID')" onclick="delAttr('','ID')">
	<input type="button" value="removeAttribute(null,'id')" onclick="delAttr(null,'id')">
	<input type="button" value="removeAttribute('','id')" onclick="delAttr('','id')">
	<input type="button" value="removeAttribute('ns2','NEW')" onclick="delAttr('ns2','NEW')">
	<input type="button" value="removeAttribute('ns2','new')" onclick="delAttr('ns2','new')">
	<input type="button" value="removeAttribute('ns2','A:NEW')" onclick="delAttr('ns2','A:NEW')">

	<p style="color: blue;">Szczegółowe informacje dla polecenia:</p>
	<span id="info"></span>
</body>

</html>

Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują metodę removeAttributeNS() zgodnie z najnowszymi wymaganiami specyfikacji DOM4. IE uwzględnia atrybuty bez zwracania uwagi na wielkość znaków w ich nazwie lokalnej.

Składnia Web IDL#

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

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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