回答:
このtagNameプロパティは、特に要素ノード(タイプ1ノード)が要素のタイプを取得するためのものです。
他にもいくつかのタイプのノードがあります(コメント、属性、テキストなど)。さまざまなノードタイプの名前を取得するには、nodeNameプロパティを使用できます。
要素ノードnodeNameに対して使用すると、そのタグ名が取得されるため、どちらを使用してもかまいませんが、を使用するとブラウザ間の整合性が向上します。nodeName
これは、2つの違いのかなり良い説明です。
記事からの追加テキスト:
tagNameとnodeNameはどちらも、html要素の名前を確認するのに役立つJavaScriptプロパティです。ほとんどの目的ではどちらでも問題ありませんが、Aグレードのブラウザーのみをサポートする場合はnodeNameが推奨され、IE5.5もサポートする場合はtagNameが推奨されます。には2つの問題があります
tagName。
- IEのすべてのバージョンで
!、コメントノードで呼び出されるとtagNameが返されます- テキストノードの場合、tagNameは戻りますが
undefined、nodeNameは戻ります#text
nodeName独自の一連の問題がありますが、それほど深刻ではありません。
- IE 5.5は
!、コメントノードで呼び出されると戻ります。これは 、IEのすべてのバージョンでこの動作の影響を受けるtagNameよりも害が少ない- IE 5.5は、
document要素または属性のnodeNameをサポートしていません。これらはどちらも、ほとんどの実用的な目的では問題になりませんが、いずれにしても留意する必要があります- このプロパティを使用すると、Konquerorはコメントノードを無視します。しかし、その後、再び、IE 5.5と一緒にKonquerorは、いないA級ブラウザ
nodeNameそのため、より広範なシナリオのサポートと潜在的に優れた前方互換性により、ほとんどの実用的な目的に固執します。言うまでもなく、それはコメントノードでしゃっくりしないことは言うまでもありません。これは、未発表のコードに侵入する傾向があります。市場シェアは0%に近いため、IE 5.5やKonquerorについては心配しないでください。
これらのプロパティについては、DOM Core仕様をご覧ください。
nodeNameNodeインターフェースで定義されたプロパティです
。http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagNameElementインターフェースで定義されたプロパティです
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
一方、Nodeインターフェースは、DOMツリー内のすべてのノード(documentオブジェクト自体を含む)によって実装されます。Elementインターフェースは、HTMLドキュメントの要素を表すDOMツリーのノード(nodeType=== 1のノード)によってのみ実装されます。
そして、これはFirefox 33と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
そう:
nodeType:ノードの種類を取得するnodeNameための休憩をnodeType === 1tagNameためにnodeType === 1nodeName壊れるnodeType === 1」はどうですか?