Maison > interface Web > js tutoriel > Extension DOM des programmes avancés JS

Extension DOM des programmes avancés JS

小云云
Libérer: 2018-03-07 13:30:13
original
1517 Les gens l'ont consulté

11.1 API Selector :

Les deux méthodes principales de SelectorsAPI sont : querySelector() et querySlelctorAll() Dans les navigateurs compatibles, elles peuvent être appelées via des instances de types Domcument et Element.

Méthode 11.1.1 querySelector() :

La méthode querySelector() reçoit un sélecteur CSS et renvoie le premier élément qui correspond au sélecteur. S'il n'y a pas de correspondance, elle renvoie null.

L'appel de la méthode querySelector() via le document trouvera les éléments correspondants dans la plage des éléments du document.

Elementquery appelant la méthode querySelector() ne trouvera que les éléments correspondants dans les éléments descendants de l'élément

11.1.2querySelectorAll()

var body=document.querySelector("body");
var p=body.querySelector(".menu_1")
//    var li=p.querySelector("li");
var li=p.querySelectorAll("li");
for(var i=0;i<li.length;i++){
var list={};
list[i]=li[i].innerHTML;
alert(list[i]);
    }
Copier après la connexion

11.1.3matchesSelector

Cette méthode reçoit un paramètre, qui est le sélecteur CSS, et renvoie true si la méthode appelée correspond à l'élément.

11.2 Element Traversal

L'API Element Traversal ajoute les 5 attributs suivants aux éléments DOM.

1 : childElementCount : renvoie le nombre d'éléments enfants

2 : firstElementChild : pointe vers le premier élément enfant, version de l'élément firstChild

3 : lastElementChild : pointe vers le dernier élément Child, version de l'élément lastChild ;

4 : previousElementSibling : pointe vers l'élément frère précédent

5 : nextElementSibling : pointe vers l'élément frère suivant ; HTML5

11.3.1 Extensions liées aux classes

1 : getElementByClassName() Cette méthode reçoit un paramètre, une chaîne d'un ou plusieurs noms de classe, et renvoie une NodeList avec tous les éléments spécifiés.

2 : attribut classList : (pour class="Opération ici")

L'attribut classList est une instance du nouveau type de collection DOMTokenList. Semblable aux autres collections DOM. Possède les méthodes suivantes :

add(value) : ajoute la chaîne donnée à la liste.

contains(value) : Indique si la valeur donnée existe dans la liste. Si c'est le cas, elle retournera true. Sinon, elle retournera false.

remove(value) Supprime la chaîne donnée de la liste

toggle (Si la valeur donnée existe dans la liste, supprimez-la, si la valeur donnée n'existe pas, ajoutez-la.)

À ce stade, vous pouvez utiliser la méthode ci-dessus pour manipuler les paramètres à l'intérieur.
<p id="select" class="aa ss dd ff hh "></p>
<script>
var elem = document.getElementById("select");
var classNum =elem.classList;
console.log(classNum);
</script>
Copier après la connexion

11.3.2 Gestion des focus

HTML5 ajoute également la fonction de gestion auxiliaire du DOM. La première est la propriété document.activeElement, qui fait toujours référence à l'élément actuellement ciblé du DOM. Obtient l'élément sur lequel l'utilisateur actuel se concentre.

Utiliser. Méthode focus()

11.3.3 Modifications dans HTMLDocument

1 : attribut readyState

Cet attribut a deux valeurs

1 ; Document

2 : complet, le document a été chargé.

La manière la plus appropriée d'utiliser la propriété document.readyState est de l'utiliser pour implémenter un indicateur indiquant que le document a été chargé. Indique que le document a été chargé.

2 : Mode de compatibilité :
if(document.readyState=="complete"){
       //执行操作
}
Copier après la connexion

Depuis qu'IE6 a commencé à distinguer si le mode de rendu de la page est standard ou mixte, IE a ajouté un attribut appelé compatMode au document pour indiquer au développeur la page utilise ce mode de rendu.

a deux valeurs de retour : CSS1compat et BackComapat.

correspond respectivement au mode standard et au mode mixte.

3 : Si l'attribut head

ne peut pas être utilisé via document.head, utilisez document.getElementByTagName();

11.3.4 Attribut de jeu de caractères

via le document .charSet=""; pour modifier le format d'encodage de la page

11.3.6 Marque d'insertion

1 : attribut innerHTML

En mode lecture, le L'attribut innerHTML renvoie les balises HTML de l'élément appelant correspondant à tous les nœuds enfants. En mode écriture, innerHTML créera une nouvelle arborescence DOM basée sur la valeur spécifiée.

Vous pouvez utiliser cet attribut pour ajouter des balises aux balises spécifiées, mais toutes les balises ne sont pas prises en charge

2 : attribut externalHTML

En mode lecture, externalHTML Renvoie la balise HTML de l'élément appelant et tous ses nœuds enfants. En mode écriture, externalHTML créera une nouvelle arborescence DOM basée sur les caractères HTML spécifiés, puis remplacera complètement l'élément appelant par ce sous-arbre DOM.

Mode lecture : renvoie toutes les balises HTML
var val = elem.outerHTML;
Copier après la connexion

Mode écriture : remplace les éléments DOM correspondants.

<p id="select" class="aa ss dd ff hh ">
<p>this is a test Demo</p>
</p>
Copier après la connexion
3 : méthode insertAdjeacentHTML()
elem.outerHTML="<p>这是一个测试的demo</p>"
Copier après la connexion

La dernière méthode pour insérer un balisage.

reçoit deux paramètres : la position d'insertion et le texte HTML à insérer. Le premier élément doit être l'une des valeurs suivantes.

1 : avant de commencer, insérez un élément frère adjacent avant l'élément actuel.

2 : après le début, insérez un nouvel élément enfant sous l'élément actuel ou insérez un nouvel élément avant le premier élément

3 : avant la fin, insérez un nouvel élément sous l'élément enfant actuel ou insérez un nouvel élément après le dernier élément

4 : afterend, ajoutez un élément frère adjacent après l'élément.

4 : Problèmes de mémoire et de performances ;

L'utilisation de la méthode présentée dans cette section pour remplacer les nœuds enfants peut provoquer des problèmes de mémoire dans le navigateur, mais l'utilisation de l'attribut innerHTML nous apportera quand même beaucoup de traversal , la raison est que lors de la définition de innerHTML ou externalHTML, un analyseur HTML sera créé. Cet analyseur s'exécute sur la base du code au niveau du navigateur, il est donc beaucoup plus rapide que js.

11.3.7 Méthode scrollIntoView

Scroll

11.4.1 Mode document :

Le mode document détermine quel niveau de CSS vous pouvez utiliser et quelles API peuvent être utilisées dans js :

Il existe quatre modes de document au total :

IE5 : afficher la page en mode promiscuité , Les nouvelles fonctionnalités de IE8 et versions supérieures ne peuvent pas être utilisées

IE7 : afficher la page en mode standard IE7, les nouvelles fonctionnalités de IE8 et versions supérieures ne peuvent pas être utilisées

IE8 : afficher la page dans les normes IE8 Rendu modal, les nouvelles fonctionnalités d'IE8 sont toutes disponibles, vous pouvez donc utiliser l'API SelectorsAPI, davantage de sélecteurs de niveau CSS2 et certaines fonctionnalités CSS3. Il existe également quelques fonctionnalités HTML5

IE9 - Page de rendu en mode standards IE9. Toutes les nouvelles fonctionnalités sont disponibles. Par exemple, la fonction d'EMACSript5.

11.4.2 attribut children

Il n'y a presque aucune différence entre l'attribut children et childNodes. Ils sont tous deux utilisés pour renvoyer tous les nœuds enfants

11.4.3contain (contain). méthode :

est utilisé pour déterminer si le nœud est un nœud descendant d'un certain nœud. Vous pouvez directement comprendre le sens littéral en anglais, y compris.

Noeud parent.contain (un certain nœud) : si true est renvoyé, il est inclus, sinon false est renvoyé.

Vous pouvez également utiliser compareDocumentPosition() pour comparer les positions des fichiers, ce qui renverra des masques pour déterminer la relation de position

Afin d'imiter la méthode contain(), vous devez faire attention au retour 16;

11.4.4 Insertion de texte :

1 : L'attribut innerText

opérera sur toutes les valeurs​​de l'élément et assemblera les documents à partir de superficiel à profond. La différence entre

et innerHTML est la suivante : innerHTML affichera toutes les balises d'élément, mais innerText ne renverra que la chaîne épissée.

n'affichera qu'un seul nœud enfant de texte lors de l'écriture.

2 : attribut externalText

Il n'y a fondamentalement pas de grande différence entre externalText et innerText, sauf que la portée est étendue pour inclure ses nœuds. Les résultats sont exactement les mêmes lors de la lecture d’un texte, mais complètement différents lors de l’écriture. externalText remplacera non seulement les éléments enfants de l'élément qui l'appelle, mais remplacera l'intégralité de l'élément. Il est recommandé de ne pas l'utiliser.

11.4.5 Défilement :

1 : scrollIntoviewIfNeeded(alignCenter) : faites défiler le navigateur uniquement lorsque l'élément n'est pas visible dans la fenêtre.

2 : scrollByLines(lineCount) : Faites défiler le contenu de l'élément jusqu'à la hauteur de page spécifiée. lineCount peut être une valeur positive ou négative.

3 : scrollBypage(pageCount) : faites défiler le contenu de l'élément jusqu'à la hauteur de page spécifiée. La hauteur spécifique est déterminée par la hauteur de l'élément.

Remarque : scrollIntoView() et scrollIntoviewIfNeeded(alignCenter) fonctionnent sur le conteneur d'éléments, tandis que scrollByLines(lineCount) et scrollBypage(pageCount) fonctionnent sur l'élément lui-même.

Chapitre 12 : DOM2 et DOM3

12.1.1 Modifications des espaces de noms XML

Avec les espaces de noms XML, les éléments de différents documents XML peuvent être mélangés, ne vous inquiétez pas conflits de noms, techniquement parlant, HTML ne prend pas en charge les espaces de noms XML, mais XHTML prend en charge les espaces de noms XML.

1 : Modifications du type de nœud

Au niveau DOM2, le type de nœud contient les attributs spécifiques à l'espace de noms suivants.

localName : nom du nœud sans préfixe d'espace de noms.

namespaceURL : L'URL de l'espace de noms est nulle.

préfixe : préfixe d'espace de noms ou null.

2 : Modifications du type de document

Le type de document au niveau DOM2 a également changé, y compris les méthodes suivantes liées à l'espace de noms.

createElementNs(namespaceURI,tagName) : crée un nouvel élément appartenant à l'espace de noms namespaceURI en utilisant le tagName donné.

createAttributeNS(nameSpaceURI, attribueName) Crée un nouvel attribut appartenant à l'espace de noms nameSpaceURI en utilisant le nom d'attribut donné.

getElementByTagNameNs(namespaceURI, tagName) renvoie une NodeList d'éléments tagName appartenant à l'URI de l'espace de noms.

3 : Modifications du type d'élément

Les modifications liées à l'élément dans le "DOM niveau 2" concernent principalement les caractéristiques opérationnelles. La nouvelle méthode est la suivante.

getAttributeNS (namespaceURI, localName) Obtient l'attribut nommé localName appartenant à l'URI de l'espace de noms

getAttributeNodeNS (namespaceURI, localName) Obtient le nœud d'attribut nommé localName appartenant à l'URI de l'espace de noms

getElementsByTagNameNS(namespaceURI, tagName) renvoie la nodeList appartenant à l'URI de l'espace de noms

hasAttributeNS(namespaceURI, localName) détermine que l'élément actuel est un attribut nommé localNaem et que l'espace de noms de cet attribut est namespaceURI

removeAttributeNS(namespaceURI, localName) supprime l'attribut qui appartient à l'URI de l'espace de noms et est nommé localName

setAttributeNS(namespaceURI,qualifiedName, value) : définit la valeur de l'attribut qui appartient à l'URI de l'espace de noms et est nomméqualifiedName to value

setAttributeNodeNS (attNode) définit le nœud d'attribut appartenant à l'espace de noms namespaceURI

4 : Modifications du type NamedNodeMap

Étant donné que les attributs sont représentés par NamedNodeMap, ces méthodes sont uniquement pour l'utilisation de la fonctionnalité

1 : getNamedItemNS(namespaceURI, localName) : obtenez l'élément nommé localName qui appartient à l'espace de noms namespaceURI et est nommé localName

2 : RemoveNamedItemNS(namespaceURI, localName) : supprimez le élément qui appartient à l'espace de noms namespaceURI et est nommé localName Élément nommé localName

3 : setNamedItemNS (node) : ajoutez un nœud dont les informations d'espace de noms sont spécifiées à l'avance.

Étant donné que les propriétés sont généralement accessibles via des éléments, ces méthodes sont rarement utilisées.

12.1.2 Autres modifications

1 : Modifications du type documentType

Ajout de trois attributs : publicID systemId et internalSubset.

2 : Modifications du type de document :

Le cœur du DOM niveau 2 est toujours le document. L'objet d'implémentation spécifie deux nouvelles méthodes : creatDocumentType() et creatDocument()

La première est utilisée pour créer un nouveau nœud DocumentType et accepte trois paramètres : type de document, publicID, systemID

Lorsque lors de la création d'un nouveau document, vous devez utiliser la méthode createDocument(), qui accepte également trois paramètres : namesp-aceURI, le nom de la balise de l'élément du document et le nouveau type de document

3 : Modifications du type de nœud

Ajoutez simplement la méthode isSupported() : utilisée pour déterminer les capacités du nœud actuel.

Cette méthode reçoit deux paramètres, le nom de la fonctionnalité et le numéro de version de la fonctionnalité.

12.2 Style

Il existe trois façons de définir des styles en HTML : externe,