回答:
if (element.nodeName == "A") {
...
} else if (element.nodeName == "TD") {
...
}
おそらくあなたもノードタイプをチェックする必要があるでしょう:
if(element.nodeType == 1){//element of type html-object/tag
if(element.tagName=="a"){
//this is an a-element
}
if(element.tagName=="div"){
//this is a div-element
}
}
編集:nodeType-valueを修正しました
text/html
)
element.tagName.toLowerCase() === 'a'
element.nodeName.toLowerCase()
可能性があるelement
場合(たとえば、nodeType == 1
上記のチェックを行っていない場合)。Node
インターフェースはありnodeName
。たとえばElement
、と同じtagName
です。他の種類のノードでは、"#text"
またはのようなもの"#document"
です。でも、私はいつもnodeType
小切手を使うと思います。
node.tagName == 'DIV'
roenvingは正しいですが、テストを次のように変更する必要があります。
if(element.nodeType == 1){ //コード }
nodeType 3は実際にはテキストノードであり、nodeType 1はHTML要素だからです。http://www.w3schools.com/Dom/dom_nodetype.aspを参照してください
通常は、toString()の戻り値から取得します。アクセス方法が異なるDOM要素で機能します。
var a = document.querySelector('a');
var img = document.createElement('img');
document.body.innerHTML += '<div id="newthing"></div>';
var div = document.getElementById('newthing');
Object.prototype.toString.call(a); // "[object HTMLAnchorElement]"
Object.prototype.toString.call(img); // "[object HTMLImageElement]"
Object.prototype.toString.call(div); // "[object HTMLDivElement]"
次に、関連する部分:
Object.prototype.toString.call(...).split(' ')[1].slice(0, -1);
Chrome、FF、Opera、Edge、IE9 +で動作します(以前のIEでは「[オブジェクトオブジェクト]」を返します)。
以前の答えは完全に機能しますが、要素を実装したインターフェイスを使用して要素を分類できる別の方法を追加します。
利用可能なインターフェースについてはW3 Orgを参照してください
console.log(document.querySelector("#anchorelem") instanceof HTMLAnchorElement);
console.log(document.querySelector("#divelem") instanceof HTMLDivElement);
console.log(document.querySelector("#buttonelem") instanceof HTMLButtonElement);
console.log(document.querySelector("#inputelem") instanceof HTMLInputElement);
<a id="anchorelem" href="">Anchor element</a>
<div id="divelem">Div Element</div>
<button id="buttonelem">Button Element</button>
<br><input id="inputelem">
インターフェースチェックは、elem instanceof HTMLAnchorElement
またはの2つの方法で行うことができelem.constructor.name == "HTMLAnchorElement"
ます。true
Element.prototype.typeof = "element";
var element = document.body; // any dom element
if (element && element.typeof == "element"){
return true;
// this is a dom element
}
else{
return false;
// this isn't a dom element
}
element.nodeName.match(/\bTBODY\b/i)
たりelement.nodeName.toLowerCase() == 'tbody'
など