Attr#
Attr.value#
Właściwość value
zwraca lub ustawia wartość dla danego atrybutu.
Z uwagi na kompatybilność wsteczną specyfikacja DOM4 definiuje dla właściwość value
dwa dodatkowe aliasy w formie właściwości Attr.nodeValue
lub Attr.textContent
, ale ich stosowanie w aktualnym kodzie produkcyjnym jest zbędne i odradzane.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var attr_value = attr.value; // getting attr.value = new_value; // setting
gdzie poszczególne człony oznaczają:
- attr_value - łańcuch znakowy reprezentujący aktualną wartość atrybutu.
- attr - atrybut będący obiektem kontekstu.
- new_value - łańcuch znakowy reprezentujący nową wartość atrybutu.
W zależności od podejmowanej akcji muszą zostać wykonane następujące kroki:
Odczyt wartości atrybutu (getting):
Zwróć wartość z obiektu kontekstu.
Zmiana wartości atrybutu (setting):
- Jeśli element skojarzony z obiektem kontekstu ma wartość
null
, to ustaw wartość tego obiektu kontekstu na przekazaną wartość. W przeciwnym razie zmień nasz obiekt kontekstu z elementu skojarzonego z obiektem kontekstu na przekazaną wartość.
Krok ten gwarantuje, że w przypadku atrybutu skojarzonego z jakimś elementem zostaną zaobserwowane wszelkie zmiany atrybutu dla tego skojarzonego elementu.
Kiedy atrybutu został skojarzony z jakimś elementem to przy odczycie właściwość value
najwygodniej zastąpić metodami Element.getAttribute()
lub Element.getAttributeNS()
, a w przypadku zapisu metodami Element.setAttribute()
lub Element.setAttributeNS()
, nie zapominając także o popularnej technice odzwierciedlenia.
Prosty przykład:
<script>
var html = document.documentElement; // referencja do elementu HTML
html.setAttributeNS("www.test.com", "p:AAA", "Test"); // ustawiamy nowy atrybut
var attr = html.attributes; // pobieramy listę atrybutów
var firstAttr = attr[0]; // referencja do pierwszego atrybutu z listy
document.write("Ustawiamy własny atrybut dla elementu HTML:");
document.write("<br>");
document.write("html.setAttributeNS('www.test.com', 'p:AAA', 'Test');");
document.write("<br><br>");
document.write("Pobieramy listę atrybutów elementu HTML:");
document.write("<br>");
document.write("html.attributes: " + attr); // [object NamedNodeMap]
document.write("<br>");
document.write("attributes.length: " + attr.length); // 1
document.write("<br><br>");
document.write("Odczytujemy właściwości pierwszego atrybutu z listy:");
document.write("<br>");
document.write("attributes[0]: " + firstAttr); // [object Attr]
document.write("<br>");
document.write("attributes[0].value: " + firstAttr.value); // Test
document.write("<br>");
document.write("attributes[0].nodeValue: " + firstAttr.nodeValue); // Test
document.write("<br>");
document.write("attributes[0].textContent: " + firstAttr.textContent); // Test
document.write("<br>");
document.write("attributes[0].name: " + firstAttr.name); // p:AAA
document.write("<br>");
document.write("attributes[0].nodeName: " + firstAttr.nodeName); // p:AAA
document.write("<br>");
document.write("attributes[0].localName: " + firstAttr.localName); // AAA
document.write("<br>");
document.write("attributes[0].prefix: " + firstAttr.prefix); // p
document.write("<br>");
document.write("attributes[0].namespaceURI: " + firstAttr.namespaceURI); // www.test.com
document.write("<br>");
document.write("attributes[0].ownerElement: " + firstAttr.ownerElement); // [object HTMLHtmlElement]
document.write("<br>");
document.write("attributes[0].specified: " + firstAttr.specified); // true
document.write("<br><br>");
firstAttr.value = 'Test2';
document.write("Zmieniamy wartość atrybutu na 'Test2':");
document.write("<br>");
document.write("attributes[0].value = 'Test2';");
document.write("<br><br>");
document.write("Odczytujemy nową wartość:");
document.write("<br>");
document.write("attributes[0].value: " + firstAttr.value); // Test2
document.write("<br>");
document.write("attributes[0].nodeValue: " + firstAttr.nodeValue); // Test2
document.write("<br>");
document.write("attributes[0].textContent: " + firstAttr.textContent); // Test2
document.write("<br><br>");
firstAttr.value = null;
document.write("Zmieniamy wartość atrybutu na null:");
document.write("<br>");
document.write("attributes[0].value = null;");
document.write("<br><br>");
document.write("Odczytujemy nową wartość:");
document.write("<br>");
document.write("attributes[0].value: " + firstAttr.value); // null
document.write("<br>");
document.write("attributes[0].nodeValue: " + firstAttr.nodeValue); // null
document.write("<br>");
document.write("attributes[0].textContent: " + firstAttr.textContent); // null
</script>
Składnia Web IDL#
interface Attr { attribute DOMString value; }