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.tagName Element.localName (zależnie od sytuacji) |
Attr* | Nazwa kwalifikowana | Attr.name Attr.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; }