Kita sering menggunakan nodeType==1 untuk menentukan apakah suatu elemen merupakan elemen HMTLEment. Elemen pada halaman adalah semua node, termasuk Element Node, Attribute Node, Text Node, dll. w3c nodeType didefinisikan sebagai berikut
const unsigned pendek ELEMENT_NODE = 1;
const unsigned pendek ATTRIBUTE_NODE = 2;
const unsigned pendek TEXT_NODE = 3;
const unsigned pendek CDATA_SECTION_NODE = 4;
const unsigned pendek ENTITY_REFERENCE_NODE = 5;
const unsigned pendek ENTITY_NODE = 6;
const unsigned pendek PROCESSING_INSTRUCTION_NODE = 7;
const unsigned pendek COMMENT_NODE = 8;
const unsigned pendek DOCUMENT_NODE = 9;
const unsigned pendek DOCUMENT_TYPE_NODE = 10;
const unsigned pendek DOCUMENT_FRAGMENT_NODE = 11;
const unsigned pendek NOTATION_NODE = 12;
Namun bagaimana jika objek kustom kita juga berisi atribut nodeType? menyukai
Copy kode kodenya sebagai berikut:
var obj = {nodeType:1};
fungsi isHTMLElement(obj){
if(obj.nodeType){
return obj.nodeType==1;
}
}
isHTMLElement(obj);//benar
isHTMLElement(obj) di atas mengembalikan nilai true, tetapi obj jelas bukan elemen simpul HTML. Berikut ini dinilai berdasarkan karakteristik objek dan pernyataan coba-tangkap.
Copy kode kodenya sebagai berikut:
fungsi isHTMLElement(obj){
var d = dokumen.createElement("div");
mencoba{
d.appendChild(obj.cloneNode(benar));
return obj.nodeType==1?true:false;
}menangkap(e){
kembali salah;
}
}
var obj1 = {nodeType:1};
var obj2 = document.createTextNode("halo");
var obj2 = dokumen.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//benar
Perlakuan khusus diperlukan untuk jendela dan dokumen.
Copy kode kodenya sebagai berikut:
fungsi isHtmlControl(obj) {
var d = dokumen.createElement("div");
mencoba{
d.appendChild(obj.cloneNode(benar));
kembalikan obj.nodeType==1 ?
}menangkap(e){
kembalikan obj==jendela ||.obj==dokumen;
}
}