首頁  >  文章  >  web前端  >  如何判斷元素是否為HTMLElement元素_javascript技巧

如何判斷元素是否為HTMLElement元素_javascript技巧

WBOY
WBOY原創
2016-05-16 17:10:162285瀏覽

我們常使用nodeType==1來判斷元素是否為HMTLElement元素。頁面上的元素都是節點(Node),有元素節點(Element Node)、屬性節點(Attribute Node)、文字節點(Text Node)等。 w3c nodeType 的定義如下

const unsigned short ELEMENT_NODE = 1;
const unsigned short ATTRIBUTE_NODE = 2;
const unsigned short TEXT_NODE = 3;
const unsigned-constd unsigned [ATA_Ft. _NODE = 5;
const unsigned short ENTITY_NODE = 6;
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short COMMENT_NODE = 8; DOC_o>g; PE_NODE = 10;
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short NOTATION_NODE = 12;


但如果我們自訂的物件也包含nodeType屬性呢?如



複製程式碼 程式碼如下:var obj = {nodeType:1}; >function isHTMLElement(obj){
    if(obj.nodeType){
        return obj.nodeType==1;
     return obj.nodeType==1;
   

以上isHTMLElement(obj)回傳true,但obj明顯不是一個HTML節點元素。下面透過物件特性及try-catch語句來判斷。



複製程式碼

程式碼如下:f document.createElement("div");     try{         d.appendChild(obj.cloneNode(true));   e){
        return false;
    }
}
var obj1 = {nodeType:1};
var obj2 = document.create; document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//true


對於window和document還要特別處理下




複製程式碼

程式碼如下:
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn