Maison > interface Web > js tutoriel > le corps du texte

Résumé complet JavaScript des éléments DOM

jacklove
Libérer: 2018-05-21 14:00:31
original
1860 Les gens l'ont consulté

Je rencontre souvent des problèmes avec javascript dom pendant mes études, donc cet article va les expliquer.

En plus de l'objet document, l'élément le plus couramment utilisé dans le DOM est l'objet Element, qui représente des éléments HTML.

Les objets élément peuvent avoir des nœuds enfants de type nœuds d'élément, nœuds de texte et nœuds de commentaire. DOM fournit une série de méthodes pour ajouter, supprimer, modifier et interroger des éléments.

Élément Il en existe plusieurs. attributs importants

nodeName : nom de la balise d'élément et un tagName similaire
nodeType : type d'élément
className : nom de classe id : identifiant de l'élément enfants : liste d'éléments enfants (HTMLCollection)
childNodes : enfant liste d'éléments (NodeList)
firstChild : le premier élément enfant
lastChild : le dernier élément enfant
nextSibling : l'élément frère suivant
previousSibling : l'élément frère précédent
parentNode , parentElement : élément parent La méthode

élément de requête

getElementById
renvoie le nœud d'élément correspondant à l'attribut ID spécifié. Si aucun nœud correspondant n'est trouvé, null est renvoyé. C'est également le moyen le plus rapide d'obtenir un élément. La méthode

var elem = document.getElementById("test");getElementsByClassName()
getElementsByClassName
Copier après la connexion

renvoie un objet de type tableau (objet de type HTMLCollection), incluant tous les éléments dont les noms de classe remplissent les conditions spécifiées (la plage de recherche s'inclut elle-même). ), l'élément Les modifications sont reflétées dans les résultats renvoyés en temps réel. Cette méthode peut être appelée non seulement sur l'objet document, mais également sur n'importe quel nœud d'élément. La méthode

var elements = document.getElementsByClassName(names);//getElementsByClassName方法的参数,可以是多个空格分隔的class名字,返回同时具有这些节点的元素。
Copier après la connexion
document.getElementsByClassName('red test');```
* getElementsByTagName()
Copier après la connexion

getElementsByTagName renvoie tous les éléments avec la balise spécifiée (la portée de recherche s'inclut elle-même). La valeur de retour est un objet HTMLCollection, c'est-à-dire que les résultats de la recherche sont une collection dynamique et que les modifications apportées à tous les éléments seront reflétées dans la collection renvoyée en temps réel. Cette méthode peut être appelée non seulement sur l'objet document, mais également sur n'importe quel nœud d'élément.

var paras = document.getElementsByTagName("p");
//上面代码返回当前文档的所有p元素节点。注意,getElementsByTagName方法会将参数转为小写后,再进行搜索。```
Copier après la connexion
getElementsByName()
getElementsByName方法用于选择拥有name属性的HTML元素,比如form、img、frame、embed和object,返回一个NodeList格式的对象,不会实时反映元素的变化。
Copier après la connexion

// Supposons qu'il existe un formulaire

var form = document.getElementsByName("x");
forms[0].tagName // "FORM" // Notez que lors de l'utilisation de cette méthode dans le navigateur IE, les éléments qui n'ont pas d'attribut name mais qui ont un attribut id avec le même nom seront également renvoyés, c'est donc Il est préférable de définir les attributs name et id sur différentes valeurs. ```* querySelector()
querySelector renvoie les nœuds d'éléments qui correspondent au sélecteur CSS spécifié. Si plusieurs nœuds répondent aux critères de correspondance, le premier nœud correspondant est renvoyé. Si aucun nœud correspondant n'est trouvé, null est renvoyé.

var el1 = document.querySelector(".myclass");
var el2 = document.querySelector('#myParent > [ng-click]');
//querySelector方法无法选中CSS伪元素。```
Copier après la connexion
querySelectorAll()
querySelectorAll方法返回匹配指定的CSS选择器的所有节点,返回的是NodeList类型的对象。NodeList对象不是动态集合,所以元素节点的变化无法实时反映在返回结果中。
Copier après la connexion
elementList = document.querySelectorAll(selectors);//querySelectorAll方法的参数,可以是逗号分隔的多个CSS选择器,返回所有匹配其中一个选择器的元素。var matches = document.querySelectorAll("div.note, div.alert");//上面代码返回class属性是note或alert的div元素。
Copier après la connexion
elementFromPoint()
elementFromPoint方法返回位于页面指定位置的元素。
Copier après la connexion
var element = document.elementFromPoint(x, y);//上面代码中,elementFromPoint方法的参数x和y,分别是相对于当前窗口左上角的横坐标和纵坐标,单位是CSS像素。
Copier après la connexion
elementFromPoint方法返回位于这个位置的DOM元素,如果该元素不可返回(比如文本框的滚动条),则返回它的父元素(比如文本框)。如果坐标值无意义(比如负值),则返回null。
Copier après la connexion

Créer un élément

createElement()
createElement方法用来生成HTML元素节点。
Copier après la connexion
var newDiv = document.createElement("div");//createElement方法的参数为元素的标签名,即元素节点的tagName属性。//如果传入大写的标签名,会被转为小写。如果参数带有尖括号(即<和>)或者是null,会报错。
Copier après la connexion
createTextNode()
createTextNode方法用来生成文本节点,参数为所要生成的文本节点的内容。
Copier après la connexion
var newDiv = document.createElement("div");var newContent = document.createTextNode("Hello");//上面代码新建一个div节点和一个文本节点
createDocumentFragment()
Copier après la connexion
//createDocumentFragment方法生成一个DocumentFragment对象。var docFragment = document.createDocumentFragment();```
Copier après la connexion

L'objet DocumentFragment est un fragment DOM qui existe en mémoire, mais n'appartient pas au document actuel. Il est souvent utilisé pour générer une structure DOM plus complexe, puis l'insérer dans le document actuel. L'avantage de ceci est que, étant donné que DocumentFragment n'appartient pas au document actuel, toute modification apportée à celui-ci n'entraînera pas le rendu de la page Web, ce qui offre de meilleures performances que la modification directe du DOM du document actuel.

##Modifier les éléments

* appendChild()
Ajouter un élément à la fin de l'élément

var newDiv = document.createElement("div");var newContent = document.createTextNode("Hello");newDiv.appendChild(newContent);```
insertBefore()
Copier après la connexion

Insérer un élément avant un élément

var newDiv = document.createElement("div");var newContent = document.createTextNode("Hello");newDiv.insertBefore(newContent, newDiv.firstChild);replaceChild()
replaceChild()
Copier après la connexion

accepte deux paramètres : l'élément à insérer et l'élément à remplacer

newDiv.replaceChild(newElement, oldElement);```
* removeChild()
Copier après la connexion

Supprimer l'élément

parentNode.removeChild(childNode);```
cloneNode()
Copier après la connexion

Clone Element, la méthode a un paramètre booléen Lorsque true est transmis, il sera profondément copié, c'est-à-dire que l'élément et ses sous-éléments seront copiés (IE copiera également ses événements. Lorsque false, seuls les éléments). l'élément lui-même sera copié

node.cloneNode(true);```##属性操作* getAttribute()
//getAttribute()用于获取元素的attribute值node.getAttribute(&#39;id&#39;);```
createAttribute()
Copier après la connexion
//createAttribute()方法生成一个新的属性对象节点,并返回它。attribute = document.createAttribute(name);
createAttribute方法的参数name,是属性的名称。
Copier après la connexion

setAttribute()

//setAttribute()方法用于设置元素属性var node = document.getElementById("div1");
node.setAttribute("my_attrib", "newVal");//等同于var node = document.getElementById("div1");var a = document.createAttribute("my_attrib");
a.value = "newVal";
node.setAttributeNode(a);```
* romoveAttribute()
Copier après la connexion
removeAttribute()用于删除元素属性
node.removeAttribute(&#39;id&#39;);
element.attributes
Copier après la connexion

Bien sûr, ce que fait la méthode ci-dessus peut également être réalisé par une opération de classe attribut de tableau element.attributes

## ##HTMLCollection et NodeList Nous savons que les objets Element représentent des éléments, donc les collections de plusieurs éléments ont généralement deux types de données. L'objet NodeList représente une liste ordonnée de nœuds. interface qui représente une collection d'éléments HTML.Elle offre la possibilité de parcourir la liste.Les méthodes et attributs de

Les méthodes suivantes obtiennent l'objet HTMLCollection

document.images //所有img元素
document.links //所有带href属性的a元素和area元素
document.anchors //所有带name属性的a元素
document.forms //所有form元素
document.scripts //所有script元素
document.applets //所有applet元素
document.embeds //所有embed元素
document.plugins //document.与embeds相同
document.getElementById("table").children
document.getElementById("table").tBodies
document.getElementById("table").rows
document.getElementById("row").cells
document.getElementById("Map").areas
document.getElementById("f2").elements //HTMLFormControlsCollection extends HTMLCollection
document.getElementById("s").options //HTMLOptionsCollection extends HTMLCollection```
Copier après la connexion

Ce qui suit. les méthodes obtiennent l'objet NodeList

document.getElementsByName("name1")
document.getElementsByClassName("class1")
document.getElementsByTagName("a")
document.querySelectorAll("a")
document.getElementById("table").childNodes
document.styleSheets //StyleSheetList,与NodeList类似```#####HTMLCollection与NodeList有很大部分相似性* 都是类数组对象,都有length属性,可以通过for循环迭代
Copier après la connexion

* Tout Il est en lecture seule

* et tous sont en temps réel, c'est-à-dire que les modifications apportées au document seront immédiatement reflétées sur les objets pertinents (il y a une exception, la NodeList renvoyée par document.querySelectorAll n'est pas en temps réel)

* sont tous Il existe une méthode item(), vous pouvez obtenir des éléments via item(index) ou item( "id")#####La différence est que * L'objet HTMLCollection a la méthode nomméeItem(), vous pouvez transmettre l'identifiant ou le nom pour obtenir des éléments

* La méthode item() de HTMLCollection et l'obtention d'éléments via des attributs (document.forms.f1) peut prendre en charge l'identifiant et le nom, tandis que l'objet NodeList ne prend en charge que l'identifiant

Cet article fournit une explication pertinente de dom , pour plus de contenu connexe, veuillez faire attention au php chinois site web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal