ホームページ  >  記事  >  ウェブフロントエンド  >  要素が HTMLElement であるかどうかを判断する方法 element_javascript のヒント

要素が HTMLElement であるかどうかを判断する方法 element_javascript のヒント

WBOY
WBOYオリジナル
2016-05-16 17:10:162269ブラウズ

要素が HMTLElement 要素であるかどうかを判断するには、多くの場合、nodeType==1 を使用します。ページ上の要素は、要素ノード、属性ノード、テキスト ノードなどを含むすべてのノードです。 w3cのnodeTypeの定義は以下の通りです

const unsigned short ELEMENT_NODE = 1;
const unsigned short TEXT_NODE = 3;
const unsigned short ENTITY_NODE = 6;
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short DOCUMENT_NODE = 9;
const unsigned short NOTATION_NODE = 12;


しかし、カスタム オブジェクトにも nodeType 属性が含まれている場合はどうなるでしょうか?たとえば、


コードをコピー

コードは次のとおりです。 var obj = {nodeType: 1}; function isHTMLElement(obj){ if(obj.nodeType){ return obj.nodeType==1;
}
}
isHTMLElement(obj);/ /true


上記の isHTMLElement(obj) は true を返しますが、obj は明らかに HTML ノード要素ではありません。以下はオブジェクトの特性とtry-catch文により判定されます。



コードをコピー

コードは次のとおりです。function isHTMLElement(obj){ var d = document.createElement("div"); try{ d.appendChild(obj.cloneNode(true));
return obj.nodeType==1?true:false; }catch( e){
return false; document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3) ;//true


ウィンドウとドキュメントには特別な処理が必要です




コードをコピー


コードは次のとおりです次のように:

function isHtmlControl (obj) {

var d = document.createElement("div");
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。