Opération js native dom
Dans cet article, nous partagerons avec vous comment faire fonctionner dom en utilisant du js natif. Nous espérons que cela sera utile à tout le monde.
ng-click="brandFnc($event)"$scope.brandFnc = function($event) { // 通过 $event.target 来获取 } ev.target.parentElementev.target.parentElement.children[0].srcev.target.previousElementSiblingev.target.nodeNameconsole.log(ev.target.outerHTML);//<button ng-click="ngGetSrc($event)">获取src</button>---整个console.log(ev.target.innerHTML);//获取src--中间的内容原生js的方法:1)创建节点:createElement创建元素, 也可以使用createTextNode创建文本节点. document.body指向的是<body>元素;document.documentElement则指向<html>元素 //创建节点 var createNode = document.createElement("p"); var createTextNode = document.createTextNode("hello world"); createNode.appendChild(createTextNode); document.body.appendChild(createNode); document.documentElement.appendChild(createNode);2)插入节点:appendChild,insertBefore, insertBefore接收两个参数,第一个是插入的节点,第二个是参照节点,如insertBefore(a,b),则a会插入在b的前面 //插入节点 var createNode = document.createElement("p");var createTextNode = document.createTextNode("hello world"); createNode.appendChild(createTextNode); var p1 = document.getElementById("p1"); document.body.insertBefore(createNode,p1);3)替换和删除元素,从replaceChild和removeChild的字面意思看,就是删除子节点,因此调用者,需要包含子节点p1,不然调用会报错。返回的节点是替换的或删除的元素,被替换/删除的元素仍然存在,但document中已经没有他们的位置了。 //替换元素 var replaceChild = document.body.replaceChild(createNode,p1);//删除元素 var removeChild = document.body.removeChild(p1);4)节点的属性:firstChild:第一个子节点lastChild:最后一个子节点childNodes:子节点集合,获取其中子节点可以someNode.childNodes[index]或者someNode.childNodes.item(index)nextSibling:下一个兄弟节点 previousSibling:上一个兄弟节点 parentNode:父节点 <ul id="ul"><li>sdsssssss</li><li>qqqq</li><li>wwww</li><li>eeee</li></ul> 复制代码 //节点属性 var ul = document.getElementById("ul"); var firstChild = ul.firstChild; console.log(firstChild.innerHTML); var lastChild = ul.lastChild; console.log(lastChild.innerHTML); var length = ul.childNodes.length; console.log(length); var secondChild = ul.childNodes.item(1); console.log(secondChild.innerHTML); var forthChild = ul.childNodes.item(2).nextSibling; console.log(forthChild.innerHTML); var thridChild = forthChild.previousSibling; console.log(thridChild.innerHTML); var parentNode = forthChild.parentNode; console.log(parentNode.innerHTML);5) 文档片段,好处在于减少dom的渲染次数,可以优化性能。 //文本片段 var fragment = document.createDocumentFragment(); var ul = document.getElementById("ul"); var li = null; for (var i = 4; i >= 0; i--) { li = document.createElement("li"); li.appendChild(document.createTextNode("item "+i)); fragment.appendChild(li); } ul.appendChild(fragment);6)克隆元素 someNode.cloneNode(true):深度克隆,会复制节点及整个子节点 someNode.cloneNode(false):浅克隆,会复制节点,但不复制子节点 //克隆 var clone = ul.cloneNode(true);
document.body.appendChild(clone);
Remarque : 1. childNodes.length a des problèmes entre navigateurs
Vous pouvez voir les Le fragment html de la liste n'utilise pas le format d'écriture de
<ul id="ul"> <li>sdsssssss</li> <li>qqqq</li> <li>wwww</li> <li>eeee</li> </ul>
mais utilise un format sans sauts de ligne car les résultats de l'obtention de ul.childNodes.length sont différents selon les navigateurs :
Dans IE, ul.childNodes.length ne calcule pas l'espace de nouvelle ligne entre li, donc la valeur est 4. Dans ff, chrome et safari, il y aura 5 nœuds de texte contenant l'espace entre li , donc ul.childNodes. la longueur est de 9. Pour résoudre le problème entre navigateurs, vous pouvez supprimer les sauts de ligne entre li et le remplacer par un format d'écriture sur une seule ligne.
2. CloneNode a des problèmes entre navigateurs
Dans IE, les éléments copiés via la méthode cloneNode copieront le gestionnaire d'événements, par exemple, var b = a.cloneNode(true) Si a a cliqué, passez la souris sur Attendez. surveillance des événements, alors b aura également cette surveillance des événements.
Dans ff, Chrome et Safari, les éléments copiés via la méthode cloneNode ne copieront que les attributs, et rien d'autre ne sera copié
Par conséquent, pour résoudre le problème entre navigateurs, il est préférable de le faire. copier avant de copier. Il est préférable de supprimer d'abord le gestionnaire d'événements.
ng-click="brandFnc($event)"$scope.brandFnc = function($event) { // 通过 $event.target 来获取 } ev.target.parentElementev.target.parentElement.children[0].srcev.target.previousElementSiblingev.target.nodeNameconsole.log(ev.target.outerHTML);//<button ng-click="ngGetSrc($event)">获取src</button>---整个console.log(ev.target.innerHTML);//获取src--中间的内容原生js的方法:1)创建节点:createElement创建元素, 也可以使用createTextNode创建文本节点. document.body指向的是<body>元素;document.documentElement则指向<html>元素 //创建节点 var createNode = document.createElement("p"); var createTextNode = document.createTextNode("hello world"); createNode.appendChild(createTextNode); document.body.appendChild(createNode); document.documentElement.appendChild(createNode);2)插入节点:appendChild,insertBefore, insertBefore接收两个参数,第一个是插入的节点,第二个是参照节点,如insertBefore(a,b),则a会插入在b的前面 //插入节点 var createNode = document.createElement("p");var createTextNode = document.createTextNode("hello world"); createNode.appendChild(createTextNode); var p1 = document.getElementById("p1"); document.body.insertBefore(createNode,p1);3)替换和删除元素,从replaceChild和removeChild的字面意思看,就是删除子节点,因此调用者,需要包含子节点p1,不然调用会报错。返回的节点是替换的或删除的元素,被替换/删除的元素仍然存在,但document中已经没有他们的位置了。 //替换元素 var replaceChild = document.body.replaceChild(createNode,p1);//删除元素 var removeChild = document.body.removeChild(p1);4)节点的属性:firstChild:第一个子节点lastChild:最后一个子节点childNodes:子节点集合,获取其中子节点可以someNode.childNodes[index]或者someNode.childNodes.item(index)nextSibling:下一个兄弟节点 previousSibling:上一个兄弟节点 parentNode:父节点 <ul id="ul"><li>sdsssssss</li><li>qqqq</li><li>wwww</li><li>eeee</li></ul> 复制代码 //节点属性 var ul = document.getElementById("ul"); var firstChild = ul.firstChild; console.log(firstChild.innerHTML); var lastChild = ul.lastChild; console.log(lastChild.innerHTML); var length = ul.childNodes.length; console.log(length); var secondChild = ul.childNodes.item(1); console.log(secondChild.innerHTML); var forthChild = ul.childNodes.item(2).nextSibling; console.log(forthChild.innerHTML); var thridChild = forthChild.previousSibling; console.log(thridChild.innerHTML); var parentNode = forthChild.parentNode; console.log(parentNode.innerHTML);5) 文档片段,好处在于减少dom的渲染次数,可以优化性能。 //文本片段 var fragment = document.createDocumentFragment(); var ul = document.getElementById("ul"); var li = null; for (var i = 4; i >= 0; i--) { li = document.createElement("li"); li.appendChild(document.createTextNode("item "+i)); fragment.appendChild(li); } ul.appendChild(fragment);6)克隆元素 someNode.cloneNode(true):深度克隆,会复制节点及整个子节点 someNode.cloneNode(false):浅克隆,会复制节点,但不复制子节点 //克隆 var clone = ul.cloneNode(true); document.body.appendChild(clone);注意:1、childNodes.length存在跨浏览器的问题
可以看到有关列表的html片段没有用 <ul id="ul"> <li>sdsssssss</li> <li>qqqq</li> <li>wwww</li> <li>eeee</li> </ul>
Ce format d'écriture est écrit dans un format sans saut de ligne car dans différents navigateurs, on obtient ul.childNodes Les résultats de .length sont différents :
Dans IE, ul.childNodes.length ne calcule pas l'espace de nouvelle ligne entre li, donc la valeur est 4. Dans ff, chrome et safari, il y aura un espace entre li. Il y a 5 nœuds de texte de le symbole, donc ul.childNodes.length vaut 9. Pour résoudre le problème entre navigateurs, vous pouvez supprimer les sauts de ligne entre li et le remplacer par un format d'écriture sur une seule ligne.
2. CloneNode a des problèmes entre navigateurs
Dans IE, les éléments copiés via la méthode cloneNode copieront le gestionnaire d'événements, par exemple, var b = a.cloneNode(true) Si a a cliqué, passez la souris sur Attendez. surveillance des événements, alors b aura également cette surveillance des événements.
Dans ff, Chrome et Safari, les éléments copiés via la méthode cloneNode ne copieront que les attributs, et rien d'autre ne sera copié
Par conséquent, pour résoudre le problème entre navigateurs, il est préférable de le faire. copiez les éléments avant de copier. Il est préférable de supprimer d'abord le gestionnaire d'événements.
Recommandations associées :
Processus Js d'exploitation des objets DOM
Analyse d'exemples d'opérations DOM dans jQuery
Comment Js exploite le DOM et obtient la hauteur et la largeur du navigateur
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PyCharm est un environnement de développement intégré (IDE) Python très populaire. Il fournit une multitude de fonctions et d'outils pour rendre le développement Python plus efficace et plus pratique. Cet article vous présentera les méthodes de fonctionnement de base de PyCharm et fournira des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à maîtriser l'utilisation de l'outil. 1. Téléchargez et installez PyCharm Tout d'abord, nous devons nous rendre sur le site officiel de PyCharm (https://www.jetbrains.com/pyc

sudo (exécution du superutilisateur) est une commande clé dans les systèmes Linux et Unix qui permet aux utilisateurs ordinaires d'exécuter des commandes spécifiques avec les privilèges root. La fonction de sudo se reflète principalement dans les aspects suivants : Fournir un contrôle des autorisations : sudo réalise un contrôle strict sur les ressources système et les opérations sensibles en autorisant les utilisateurs à obtenir temporairement les autorisations de superutilisateur. Les utilisateurs ordinaires ne peuvent obtenir des privilèges temporaires via sudo qu'en cas de besoin et n'ont pas besoin de se connecter en permanence en tant que superutilisateur. Sécurité améliorée : en utilisant sudo, vous pouvez éviter d'utiliser le compte root lors des opérations de routine. L'utilisation du compte root pour toutes les opérations peut entraîner des dommages inattendus au système, car toute opération incorrecte ou imprudente bénéficiera de toutes les autorisations. et

Étapes de fonctionnement et précautions de LinuxDeploy LinuxDeploy est un outil puissant qui peut aider les utilisateurs à déployer rapidement diverses distributions Linux sur des appareils Android, permettant aux utilisateurs de découvrir un système Linux complet sur leurs appareils mobiles. Cet article présentera en détail les étapes de fonctionnement et les précautions de LinuxDeploy et fournira des exemples de code spécifiques pour aider les lecteurs à mieux utiliser cet outil. Étapes de l'opération : Installer LinuxDeploy : Tout d'abord, installez

Vraisemblablement, de nombreux utilisateurs ont plusieurs ordinateurs inutilisés à la maison et ont complètement oublié le mot de passe de mise sous tension car ils n'ont pas été utilisés depuis longtemps. Ils aimeraient donc savoir quoi faire s'ils oublient le mot de passe ? Alors jetons un coup d’œil ensemble. Que faire si vous oubliez d'appuyer sur F2 pour le mot de passe de démarrage Win10 ? 1. Appuyez sur le bouton d'alimentation de l'ordinateur, puis appuyez sur F2 lorsque vous allumez l'ordinateur (différentes marques d'ordinateurs ont des boutons différents pour accéder au BIOS). 2. Dans l'interface du BIOS, recherchez l'option de sécurité (l'emplacement peut être différent selon les marques d'ordinateurs). Habituellement dans le menu des paramètres en haut. 3. Recherchez ensuite l’option SupervisorPassword et cliquez dessus. 4. À ce stade, l'utilisateur peut voir son mot de passe, et en même temps trouver Activé à côté et le basculer sur Dis.

Avec la popularité des smartphones, la fonction capture d’écran est devenue l’une des compétences essentielles pour l’utilisation quotidienne des téléphones portables. En tant que l'un des téléphones mobiles phares de Huawei, la fonction de capture d'écran du Huawei Mate60Pro a naturellement attiré beaucoup d'attention de la part des utilisateurs. Aujourd'hui, nous partagerons les étapes de capture d'écran du téléphone mobile Huawei Mate60Pro, afin que tout le monde puisse prendre des captures d'écran plus facilement. Tout d'abord, le téléphone mobile Huawei Mate60Pro propose une variété de méthodes de capture d'écran et vous pouvez choisir la méthode qui vous convient en fonction de vos habitudes personnelles. Ce qui suit est une introduction détaillée à plusieurs interceptions couramment utilisées :

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

1. Introduction à PDO PDO est une bibliothèque d'extension de PHP, qui fournit une manière orientée objet d'exploiter la base de données. PDO prend en charge une variété de bases de données, notamment Mysql, postgresql, Oracle, SQLServer, etc. PDO permet aux développeurs d'utiliser une API unifiée pour exploiter différentes bases de données, ce qui permet aux développeurs de basculer facilement entre différentes bases de données. 2. PDO se connecte à la base de données Pour utiliser PDO pour vous connecter à la base de données, vous devez d'abord créer un objet PDO. Le constructeur de l'objet PDO reçoit trois paramètres : type de base de données, nom d'hôte, nom d'utilisateur de la base de données et mot de passe. Par exemple, le code suivant crée un objet qui se connecte à une base de données MySQL : $dsn="mysq

Opération de chaîne PHP : une méthode pratique pour supprimer efficacement les espaces Dans le développement PHP, vous rencontrez souvent des situations dans lesquelles vous devez supprimer des espaces d'une chaîne. La suppression des espaces peut rendre la chaîne plus propre et faciliter le traitement et l'affichage ultérieurs des données. Cet article présentera plusieurs méthodes efficaces et pratiques pour supprimer des espaces et joindra des exemples de code spécifiques. Méthode 1 : utilisez la fonction intégrée PHP trim() La fonction intégrée PHP trim() peut supprimer les espaces aux deux extrémités de la chaîne (y compris les espaces, les tabulations, les nouvelles lignes, etc.), ce qui est très pratique et simple. utiliser.
