غالبًا ما نستخدمNodeType==1 لتحديد ما إذا كان العنصر هو عنصر HMTLElement. العناصر الموجودة في الصفحة هي جميع العقد، بما في ذلك عقدة العنصر وعقدة السمة وعقدة النص وما إلى ذلك. يتم تعريف نوع العقدة w3c على النحو التالي
ثابت قصير غير موقع ELEMENT_NODE = 1؛
ثابت قصير غير موقع ATTRIBUTE_NODE = 2؛
ثابت TEXT_NODE قصير غير موقع = 3؛
ثابت CDATA_SECTION_NODE قصير غير موقع = 4؛
ثابت قصير غير موقع ENTITY_REFERENCE_NODE = 5؛
ثابت قصير غير موقع ENTITY_NODE = 6؛
PROCESSING_INSTRUCTION_NODE قصير غير موقع = 7؛
ثابت قصير غير موقع COMMENT_NODE = 8؛
ثابت قصير غير موقع DOCUMENT_NODE = 9؛
ثابت قصير غير موقع DOCUMENT_TYPE_NODE = 10؛
ثابت قصير غير موقع DOCUMENT_FRAGMENT_NODE = 11؛
ثابت قصير غير موقع NOTATION_NODE = 12؛
ولكن ماذا لو كان كائننا المخصص يحتوي أيضًا على سمة NodeType؟ يحب
انسخ رمز الكود كما يلي:
var obj = {nodeType:1};
الدالة هيHTMLelement(obj){
إذا (obj.nodeType) {
إرجاع obj.nodeType==1;
}
}
isHTMLlement(obj);//true
يُرجع isHTMLElement(obj) أعلاه صحيحًا، ولكن من الواضح أن obj ليس عنصر عقدة HTML. يتم الحكم على ما يلي من خلال خصائص الكائن وبيانات محاولة الالتقاط.
انسخ رمز الكود كما يلي:
الدالة هيHTMLelement(obj){
var d = document.createElement("div");
يحاول{
d.appendChild(obj.cloneNode(true));
إرجاع obj.nodeType==1?true:false;
}قبض(ه){
عودة كاذبة.
}
}
var obj1 = {nodeType:1};
var obj2 = document.createTextNode("hello");
var obj2 = document.createElement("p");
isHTMLlement(obj1);//false
isHTMLlement(obj2);//false
isHTMLlement(obj3);//true
مطلوب معاملة خاصة للنافذة والوثيقة.
انسخ رمز الكود كما يلي:
الدالة هيHtmlControl(obj) {
var d = document.createElement("div");
يحاول{
d.appendChild(obj.cloneNode(true));
إرجاع obj.nodeType==1 صحيح: خطأ؛
}قبض(ه){
return obj==window ||.obj==document;
}
}