Node#
Node.nodeName#
Właściwość nodeName zwraca łańcuch znakowy reprezentujący nazwę danego węzła. 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:
var node_name = node.nodeName;gdzie poszczególne człony oznaczają:
- node_name - łańcuch znakowy reprezentujący nazwę węzła. Dla pięciu typów węzłów są to stałe wartości: "
#text", "#cdata-section", "#comment", "#document" i "#document fragment", ale w pozostałych przypadkach jest ona wyznaczana w inny sposób. - node - węzeł będący obiektem kontekstu.
W poniższej tabeli umieszczono zależności między typem węzła a wartością zwracaną przez właściwość nodeName.
| Typ węzła | nodeName | Alternatywa |
|---|---|---|
Element | Nazwa kwalifikowana | Element.tagNameElement.localName (zależnie od sytuacji) |
Attr* | Nazwa kwalifikowana | Attr.nameAttr.nodeName |
Text | "#text" | |
CDATASection* | "#cdata-section" | |
EntityReference* | Nazwa | |
Entity* | Nazwa | |
ProcessingInstruction | Cel | ProcessingInstruction.target |
Comment | "#comment" | |
Document | "#document" | |
DocumentType | Nazwa | DocumentType.name |
DocumentFragment | "#document fragment" | |
Notation* | Nazwa |
Warto podkreślić, że właściwość nodeName ma identyczne działanie jak właściwość Element.tagName, dotyczy to wszystkich elementów, niezależnie od rodzaju dokumentu (XML i jego pochodnych czy HTML). Wymienność z właściwością Element.localName będzie zachodzić w przypadku elementów bez prefiksu przestrzeni nazw i z ewentualną konwersją wszystkich odpowiadających wartości na małe lub duże litery jeśli mamy do czynienia z dokumentami HTML oraz elementami w przestrzeni nazw HTML.
W ramach uzupełnienie proponuję zapoznać się z interesującym artykułem ".nodeName Case Sensitivity" autorstwa Johna Resiga.
Prosty przykład:
<script>
function getInfoNode(desc, whatNode){
var const_node = [
"ELEMENT_NODE", "ATTRIBUTE_NODE", "TEXT_NODE", "CDATA_SECTION_NODE",
"ENTITY_REFERENCE_NODE", "ENTITY_NODE", "PROCESSING_INSTRUCTION_NODE", "COMMENT_NODE",
"DOCUMENT_NODE", "DOCUMENT_TYPE_NODE", "DOCUMENT_FRAGMENT_NODE", "NOTATION_NODE"
];
var const_val = whatNode[const_node[whatNode.nodeType - 1]];
doc.write(desc + "<br>");
doc.write("Interfejs: " + whatNode + "<br>");
doc.write("nodeType: " + whatNode.nodeType + "<br>");
doc.write("nodeName: " + whatNode.nodeName + "<br>");
doc.write("nodeValue: " + whatNode.nodeValue + "<br>");
doc.write("Stała " + const_node[whatNode.nodeType] + ": " + const_val + "<br><br>");
}
var doc = document; // domyślny dokument tworzony przez parser HTML
getInfoNode("Parametry dla węzła typu Document:", doc);
var newDocXML = doc.implementation.createDocument("", "", null);
getInfoNode("Parametry dla węzła typu XMLDocument:", newDocXML);
var newDTD = document.implementation.createDocumentType("nazwaDTD", "publiczny ID", "systemowy ID");
getInfoNode("Parametry dla węzła typu DocumentType:", newDTD);
var newFragment = doc.createDocumentFragment();
getInfoNode("Parametry dla węzła typu DocumentFragment:", newFragment);
var newElement = doc.createElement("NazwaKwalifikowanaElementu");
getInfoNode("Parametry dla węzła typu Element:", newElement);
var newText = doc.createTextNode("Treść węzła tekstowego.");
getInfoNode("Parametry dla węzła typu Text:", newText);
var newComment = doc.createComment("Treść węzła komentarzowego");
getInfoNode("Parametry dla węzła typu Comment:", newComment);
var newPI = doc.createProcessingInstruction("celPI", "instrukcjePI");
getInfoNode("Parametry dla węzła typu ProcessingInstruction:", newPI);
var newAttr = doc.createAttribute("NazwaKwalifikowanaAtrybutu");
getInfoNode("Parametry dla obiektu typu Attr:", newAttr);
</script>Składnia Web IDL#
interface Node : EventTarget { readonly attribute DOMString nodeName; }