Zusammenfassung des zugehörigen Wissens über Dom in JS
Der Inhalt dieses Artikels ist eine Zusammenfassung des relevanten Wissens über Dom in JS. Ich hoffe, dass er für Freunde in Not hilfreich ist.
Prinzip
Wird verwendet, um die gelernten Wissenspunkte aufzuzeichnen und zusammenzufassen, um die Vergangenheit Revue passieren zu lassen und neue Dinge zu lernen
Erklärung
Schreiben Sie es so erleichtern Sie Ihr Gedächtnis
Speicher Klicken Sie auf
Knotenbezogen
Dom-Knoten erhalten
getElement (Id, ClassName, TagName) und querySelector (/All this is eine statische Knotensammlung, nicht in Echtzeit)
childNodes/firstChild/lastChild/nextSibling/ previousSibling/parentNode ruft alle Arten verwandter Knoten ab, nicht nur Elementknoten
children/firstElmentChild/lastElmentChild/nextElmentSibling/ previousElmentSibling/parentElment, Ruft nur elementbezogene Knoten ab
Knotenbaum
Der entscheidende Punkt ist:
HTMLBodyElement Das sind alle Konstruktoren, und das Terminal der Prototypenkette ist immer noch Object.prototype
document.body.__proto__ === HTMLBodyElement.prototype //true document.documentElement.__proto__.__proto__ === HTMLBodyElement.prototype.__proto__ //true document.documentElement.__proto__.__proto__===HTMLElement.prototype //true
nodeType
常量 | 值 | 描述 |
---|---|---|
Node.ELEMENT_NODE | 1 | 元素节点,element |
Node.TEXT_NODE | 3 | 文本节点,textContent |
Node.PROCESSING_INSTRUCTION_NODEE | 7 | 一个用于XML文档的 ProcessingInstruction ,例如 声明。 |
Node.COMMENT_NODE | 8 | 一个注释节点 |
Node.DOCUMENT_NODE | 9 | Document节点 |
Node.DOCUMENT_TYPE_NODE | 10 | 描述文档类型的 DocumentType 节点。例如 文档类型声明。 |
Node.DOCUMENT_FRAGMENT_NODE | 11 | 一个 DocumentFragment 节点,代码片段节点 |
innerHTML,outerHTML,textContent
elem.innerHTML:指的是elem中所有的childNodes,包括注释节点可利用elem.innerHTML += "xxx"
进行累计全覆盖
elem.outerHTML:指的是elem中所有的childNodes以及elem自身包括注释节点
elem.textContent:指的是elem的childNodes中所有的文本节点,不包括注释节点
注意点:
对于文本内容例如:,innerHTML会进行转译> innerHTML会对内容中的标签进行转译为html相应节点
当script片段放入innerHTML中时不会执行,但是对于包含事件类型的脚本就存在注入风险
"<script>alert('I am John in an annoying alert!')</script>"; //无风险 "<img src="/static/imghw/default1.png" data-src="https://img.php.cn//upload/image/609/508/163/1540542304653784.png" class="lazy" alt="Zusammenfassung des zugehörigen Wissens über Dom in JS" >"; //有风险
所以对于纯文本建议使用textContent
outerHTML可以用来replace替换当前及自身的内容
nodeValue只有文本和注释节点才有值,否则输出null
属性相关
attributes
元素属性的map集合,可通过for-of迭代遍历出name-value
hasAttribute/get/set/remove ==>检测是否存在属性/得到/设置/删除
elem.proName与elem.getAttribute(proName)基本一致,有个别不一致,例如input-value
let input = document.querySelector("input"); input.setAttribute("value", 3); //行间样式显示3 input.value = 666; //页面内容显示666 console.log(input.getAttribute("value")); //3
自定义属性
通过data-log-n = 1可以通过elem.dataset.logN获取属性
元素创建以及增删改查
元素节点创建let div = document.createElement('div');文本节点创建let textNode = document.createTextNode('Here I am');
简单补充一个表格的创建
let table = document.createElement("table"); //创建一个table元素节点 let tbody = document.createElement("tbody"); //创建一个tbody元素节点 tbody.insertRow(0); //创建一行 tbody.rows[0].insertCell(0); //创建一行第一列 tbody.rows[0].cells[0].append(document.createTextNode("(0,0)")); //补充其内容 tbody.rows[0].insertCell(1); //创建一行第二列 tbody.rows[0].cells[1].append(document.createTextNode("(0,1)")); table.append(tbody); div.append(table);
元素增删改查
node.append()与node.prepend()都是在node内部添加,一个始终往队尾加一个往队首加
node.before()与node.after(),一个加在node自身节点的上面,一个加在下面
node.replace();自身节点替换成参数节点
还有一个node.insertAdjacentHTML(where,html);where有4种值
"beforebegin"与"afterbegin"在node开始位置的前或者后添加html
"beforeend"与"afterend"在node结束位置的前或者后添加html
elem.removeChild():删除子节点,还存在内存中通过变量可以读取
node.remove():则彻底删除,不再内存中,不再能被读取
class相关
className将class的value以字符串形式返回
classList将class的value以类数组对象返回,提供了4种方法方便对class进行增删改查
elem.classList.add/remove("class"):增加和删除类
elem.classList.toggle("class"): 如果类存在,则删除它,否则添加它
elem.classList.contains("class"): 返回true/false,检查给定的类
style相关
通过style获取属性值必须是在行间样式中有填写的,否则空;elem.style.borderLeftWidth="100px"通过破折号"-"变成大写可以获取属性,必须带有px
重置样式:elem.style.borderLeftWidth="";利用空字符串浏览器会应用CSS类及其内置样式
完全重写样式:div.style.cssText="color: red !important;"或者div.setAttribute('style', 'color: red...')
一种有css关联的样式,而不局限与行间样式:getComputedStyle(element[, pseudo])
<style> .box { width: 100px; } .a { font-size: 1em; } .a:after { content: "666"; display: inline-block; width: 10px; height: 10px; } </style> <div> <div>213</div> </div> <script> let div = document.querySelector(".a"); //let style = getComputedStyle(div,"after"); 读取伪类元素 //console.log(style.content); let style = getComputedStyle(div); console.log(style.left); //auto console.log(style.fontSize); //16px </script>
返回结果与css样式关联,返回结果是经过计算的,例如16px,并且结果不一定是我们想要的例如auto
它还能读取伪类元素的样式属性,将第二个参数填写after;getComputedStyle(element, "after")
元素大小属性
记住这张图基本搞定:
简单写写:offsetWidth:元素全尺寸=border+padding+content+滚动条宽度;clientWidth/Height:只考虑可见部分content+padding(不加滚动条);
顶部边框宽度:clientTop,左边边框宽度:clientLeft,但是当滚动条在左边时要加上其宽度=clientLeft
offsetParent来获取最近的CSS定位祖先。并offsetLeft/offsetTop提供相对于它左上角的x / y坐标。
属性scrollWidth/scrollHeight还包括滚出(隐藏)部分,例如没有水平滚动,scrollWidth等于clientWidth
大多数几何属性是只读的,但scrollLeft/scrollTop可以更改,浏览器将滚动元素。
scrollLeft/scrollTop - 元素的滚动部分的宽度/高度
注意点:
如果一个元素不能被滚动(例如,它没有溢出,或者这个元素有一个"non-scrollable"属性), scrollTop将被设置为0。
设置scrollTop的值小于0,scrollTop 被设为0
如果设置了超出这个容器可滚动的值, scrollTop 会被设为最大值.
顺便提提如何是浏览器滚动条滚动:scrollTo(x,y)让滚动条到水平x,垂直y的位置;scrollBy(x,y)让滚动条每次以水平x,垂直y的距离滚动;
scrollIntoView():参数true默认值,滚到顶部,false滚到底部;document.body.style.overflow = "hidden"
禁止滚动
整个文档的宽度/高度,带有滚动的部分
let scrollHeight = Math.max( document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight );
窗口大小
两种办法:document.documentElement.clientWidth/Height
,window.innerWidth/Height
有细微区别当有滚动条时,前者不包括后者包括
坐标相关
获取元素相对窗口的坐标elem.getBoundingClientRect()
返回的包换坐标的对象,左上顶点的(left,top)以及右下顶点的(right,bottom)
网页滚出窗口部分,有两种方式计算pageYOffset
或者document.documentElement.scrollTop
因此我们可以计算元素相对与页面的位置
function getCoords(elem) { let box = elem.getBoundingClientRect(); return { top: box.top + pageYOffset, left: box.left + pageXOffset }; }
Das obige ist der detaillierte Inhalt vonZusammenfassung des zugehörigen Wissens über Dom in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann
