Nous utilisons souvent nodeType==1 pour déterminer si un élément est un élément HMTLElement. Les éléments de la page sont tous des nœuds, y compris le nœud d'élément, le nœud d'attribut, le nœud de texte, etc. w3c nodeType est défini comme suit
const non signé court ELEMENT_NODE = 1;
const non signé court ATTRIBUTE_NODE = 2;
const non signé court TEXT_NODE = 3;
const court non signé CDATA_SECTION_NODE = 4;
const non signé court ENTITY_REFERENCE_NODE = 5 ;
const non signé court ENTITY_NODE = 6 ;
const non signé court PROCESSING_INSTRUCTION_NODE = 7;
const non signé court COMMENT_NODE = 8;
const non signé court DOCUMENT_NODE = 9 ;
const court non signé DOCUMENT_TYPE_NODE = 10 ;
const non signé court DOCUMENT_FRAGMENT_NODE = 11 ;
const non signé court NOTATION_NODE = 12;
Mais que se passe-t-il si notre objet personnalisé contient également l'attribut nodeType ? comme
Copiez le code comme suit :
var obj = {nodeType:1} ;
la fonction estHTMLElement(obj){
si(obj.nodeType){
retourner obj.nodeType==1 ;
}
}
isHTMLElement(obj);//true
Le isHTMLElement(obj) ci-dessus renvoie true, mais obj n'est évidemment pas un élément de nœud HTML. Ce qui suit est jugé par les caractéristiques de l'objet et les instructions try-catch.
Copiez le code comme suit :
la fonction estHTMLElement(obj){
var d = document.createElement("div");
essayer{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1?true:false;
}attraper(e){
renvoie faux ;
}
}
var obj1 = {nodeType:1} ;
var obj2 = document.createTextNode("bonjour");
var obj2 = document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//true
Un traitement spécial est requis pour la fenêtre et le document.
Copiez le code comme suit :
fonction isHtmlControl(obj) {
var d = document.createElement("div");
essayer{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1 ?
}attraper(e){
return obj==fenêtre || obj==document;
}
}