Apa perbedaan antara $('this')[0].nodeName
dan $('this')[0].tagName
?
javascript
dom
Kdniazi
sumber
sumber
Jawaban:
The
tagName
properti dimaksudkan khusus untuk node elemen (tipe 1 node) untuk mendapatkan jenis elemen .Ada beberapa jenis node lain juga (komentar, atribut, teks, dll.). Untuk mendapatkan nama salah satu dari berbagai jenis node, Anda dapat menggunakan
nodeName
properti .Bila menggunakan
nodeName
terhadap elemen node , Anda akan mendapatkan nama tag, sehingga baik benar-benar bisa digunakan, meskipun Anda akan mendapatkan konsistensi yang lebih baik antara browser saat menggunakannodeName
.sumber
Ini adalah penjelasan yang cukup bagus tentang perbedaan keduanya.
Menambahkan teks dari artikel:
sumber
Baca tentang properti tersebut di spesifikasi DOM Core.
nodeName
adalah properti yang ditentukan dalam antarmuka Nodehttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
adalah properti yang ditentukan dalam antarmuka Elemenhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
btw antarmuka Node diimplementasikan oleh setiap node di pohon DOM (termasuk
document
objek itu sendiri). Antarmuka Elemen diimplementasikan hanya oleh node di pohon DOM yang mewakili elemen dalam dokumen HTML (node dengannodeType
=== 1).sumber
Dan inilah yang terjadi di Firefox 33 dan Chrome 38:
HTML:
<div class="a">a</div>
Js:
node = e node.nodeType === 1 node.nodeName === 'DIV' node.tagName === 'DIV' node = e.getAttributeNode('class') node.nodeType === 2 node.nodeName === 'class' node.tagName === undefined node = e.childNodes[0] node.nodeType === 3 node.nodeName === '#text' node.tagName === undefined
Begitu:
nodeType
untuk mendapatkan jenis node:nodeName
istirahat untuknodeType === 1
tagName
untuknodeType === 1
sumber
nodeName
istirahat untuknodeType === 1
"?The read-only Node.nodeType property is an integer that identifies what the node is.
?elem
?) Melainkan samatagName
yang berbeda untuk setiap elem. Jadi, Anda mungkin ingin selalu menggunakannodeType
untuk mendeteksi jenis node dantagName
untuk nama tag.