doucument

查找

Method Description
document.getElementById(id) Find an element by element id
document.getElementsByTagName(name) Find elements by tag name
document.getElementsByClassName(name) Find elements by class name

这里要注意,TagName和ClassName都是数组,因为他们不是唯一的

  1. let a=document.querySelector('#haha')
  2. let a=document.querySelectorAll('.haha')
  3. let a=document.querySelectorAll('p.haha')

可以看到query的作用范围更大点,写法也更方便点,尤其可以指定元素+class,查找更精确

改变

Property Description
element.innerHTML = new html content Change the inner HTML of an element
element.attribute = new value Change the attribute value of an HTML element
element.style.property = new style Change the style of an HTML element
Method Description
element.setAttribute(attribute, value) Change the attribute value of an HTML element

注意这里的element.class比较特殊,后面会讲到

setAttribute

  1. let a=document.getElementById('demo')
  2. a.innerHTML='ixix'
  3. a.setAttribute('class','a') //就是设置class的value等于a

但是a.class=’a’就不行,因为class是一个object,不可以直接等于1个值
需要a.classList.add(‘a’)

删除增加元素

Method Description
document.createElement(element) Create an HTML element
document.removeChild(element) Remove an HTML element
document.appendChild(element) Add an HTML element
document.replaceChild(new, old) Replace an HTML element
document.write(text) Write into the HTML output stream

添加事件

Method Description
document.getElementById(id).onclick = function(){code} Adding event handler code to an onclick event

事件有很多种

event事件

onclick

鼠标点击元素发生的时间,这是用的最多的event了

  1. document.getElementById("myBtn").onclick = displayDate; //这里注意不能加括号,不然就还没点呢就直接执行了
  2. function displayDate() {
  3. document.getElementById("demo").innerHTML = Date();
  4. }

这里注意不能加括号,不然就还没点呢就直接执行了
但是如果我们把它放到html里就不一样了

  1. function displayDate(i) {
  2. document.getElementById("demo").innerHTML =i;
  3. }
  1. <h1 class="one a" id="demo"></h1>
  2. <h2 id="haha" onclick="displayDate('xixxixix')">sxsx</h2>//我们就可以带参数运行了

onload and onunload

加载和离开页面事件
当用户进入或离开页面时触发 onload 和 onunload 事件。 onload 事件可用于检查访问者的浏览器类型和浏览器版本,并根据这些信息加载适当版本的网页。 onload 和 onunload 事件可用于处理 cookie。

onchange

onchange 事件通常与输入字段的验证结合使用。 以下是如何使用 onchange 的示例。当用户更改输入字段的内容时,将调用 upperCase() 函数。比如这里你输入了字母之后你按回车,小写字母就会自动编程大写了。
点击查看【codepen】

onmouseover and onmouseout

很简单就是鼠标经过,和鼠标离开

onmousedown, onmouseup and onclick

The onmousedown, onmouseup, and onclick events are all parts of a mouse-click. First when a mouse-button is clicked, the onmousedown event is triggered, then, when the mouse-button is released, the onmouseup event is triggered, finally, when the mouse-click is completed, the onclick event is triggered.

DOM事件监听器

  1. document.getElementById("myBtn").addEventListener("click", displayDate);

addEventListener() 方法将事件处理程序附加到元素而不覆盖现有的事件处理程序。
您可以将多个事件处理程序添加到一个元素。
您可以将事件侦听器添加到任何 DOM 对象,而不仅仅是 HTML 元素。即窗口对象。
addEventListener() 方法可以更轻松地控制事件对冒泡的反应。
You can easily remove an event listener by using the removeEventListener() method.

  1. element.addEventListener(event, function, useCapture);

第一个参数是事件的类型(如“click”或“mousedown”或任何其他 HTML DOM 事件。)
第二个参数是我们要在事件发生时调用的函数。
第三个参数是一个布尔值,指定是使用事件冒泡还是事件捕获。此参数是可选的。

  1. window.addEventListener("resize", function(){
  2. document.getElementById("demo").innerHTML = sometext;
  3. });

DOM导航

html DOM - 图1
我们用dom导航到任意一个我们想要到达的节点
使用 HTML DOM,节点树中的所有节点都可以通过 JavaScript 访问。 可以创建新节点,也可以修改或删除所有节点。

节点关系

节点树中的节点彼此之间具有层次关系。 术语父、子和兄弟用于描述关系。
在节点树中,顶部节点称为根(或根节点)
每个节点都只有一个父节点,除了根节点(没有父节点)
一个节点可以有多个子节点
兄弟姐妹(兄弟姐妹)是具有相同父节点的节点

From the HTML above you can read:

  • is the root node
  • has no parents
  • is the parent of and
  • is the first child of
  • is the last child of

and:

  • has one child: </li><li><title> has one child (a text node): “DOM Tutorial”</li><li><body> has two children: <h1> and <p></li><li><h1> has one child: “DOM Lesson one”</li><li><p> has one child: “Hello world!”</li><li><p><h1> and <p> are siblings <a name="nSqGk"></a></p> <h2 id="cw4h8"><a name="cw4h8" class="reference-link"></a><span class="header-link octicon octicon-link"></span>在节点之间导航</h2><p>You can use the following node properties to navigate between nodes with JavaScript:</p> </li><li><p>parentNode</p> </li><li>childNodes[<em>nodenumber</em>]</li><li>firstChild</li><li>lastChild</li><li>nextSibling</li><li>previousSibling <a name="Yoazw"></a><h2 id="9v3h0a"><a name="9v3h0a" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Child Nodes and Node Values</h2>```html <html><body> </li></ul> <p><h1 id="id01">My First Page</h1></p> <p id="id02"></p> <p></body> </html></p> <pre><code>所有元素的firstChild都是元素最前面的#text object,里面有一个属性nodevalue就是文本<br />后面的child用ChildNote[]来表示 ```javascript console.log(b.childNodes[0]);//0就和firstChild意思是一样的 </code></pre><p><a name="m6FwN"></a></p> <h2 id="1212ni"><a name="1212ni" class="reference-link"></a><span class="header-link octicon octicon-link"></span>DOM Root Nodes</h2><pre><code class="lang-javascript">console.log(document.body); console.log(document.documentElement); </code></pre> <p>输出结果,看了就懂<br /><img src="https://cdn.nlark.com/yuque/0/2022/png/22734758/1653310800600-fee8e2a3-8241-477c-b90c-5ec3015c95a9.png#clientId=uef06d3da-95a0-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=247&id=ubf2b3bbf&margin=%5Bobject%20Object%5D&name=image.png&originHeight=494&originWidth=1110&originalType=binary&ratio=1&rotation=0&showTitle=false&size=70132&status=done&style=none&taskId=ud5019edb-aaf0-4fef-9e12-00b6627d175&title=&width=555" alt="image.png"> <a name="V5q7h"></a></p> <h2 id="7to3t"><a name="7to3t" class="reference-link"></a><span class="header-link octicon octicon-link"></span>nodename</h2><pre><code class="lang-javascript">console.log(b.nodeName); </code></pre> <p>就是输出标签,比如这里是DIV <a name="ogQjT"></a></p> <h2 id="9mpkqu"><a name="9mpkqu" class="reference-link"></a><span class="header-link octicon octicon-link"></span>The nodeType Property</h2><p>The nodeType property is read only. It returns the type of a node.</p> <pre><code class="lang-html"><h1 id="id01">My First Page</h1> <p id="id02"></p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script> </code></pre> <p>The most important nodeType properties are:</p> <table> <thead> <tr> <th>Node</th> <th>Type</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td>ELEMENT_NODE</td> <td>1</td> <td><h1 class="heading">W3Schools</h1></td> </tr> <tr> <td>ATTRIBUTE_NODE</td> <td>2</td> <td>class = “heading” (deprecated)</td> </tr> <tr> <td>TEXT_NODE</td> <td>3</td> <td>W3Schools</td> </tr> <tr> <td>COMMENT_NODE</td> <td>8</td> <td><!-- This is a comment --></td> </tr> <tr> <td>DOCUMENT_NODE</td> <td>9</td> <td>The HTML document itself (the parent of <html>)</td> </tr> <tr> <td>DOCUMENT_TYPE_NODE</td> <td>10</td> <td><!Doctype html></td> </tr> </tbody> </table> <p><a name="CMts3"></a></p> <h1 id="5n8ygy"><a name="5n8ygy" class="reference-link"></a><span class="header-link octicon octicon-link"></span>DOM元素</h1><p><a name="cLmkI"></a></p> <h2 id="c2kdca"><a name="c2kdca" class="reference-link"></a><span class="header-link octicon octicon-link"></span>创建</h2><pre><code class="lang-html"><div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> const para = document.createElement("p"); const node = document.createTextNode("This is new."); para.appendChild(node); const element = document.getElementById("div1"); element.appendChild(para); </script> </code></pre> <p>基本原理就是先创建元素,然后在元素里添加东西<br />用appendChild添加,但是这个永远是添加在最后一个的<br />如果想添加在前面就这样写 <a name="tN7EC"></a></p> <h3 id="1a0t7i"><a name="1a0t7i" class="reference-link"></a><span class="header-link octicon octicon-link"></span>insertBefore()</h3><pre><code class="lang-html"><div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> const para = document.createElement("p"); const node = document.createTextNode("This is new."); para.appendChild(node); const element = document.getElementById("div1"); const child = document.getElementById("p1"); element.insertBefore(para, child); </script> </code></pre> <p><a name="UkBbA"></a></p> <h2 id="gafy64"><a name="gafy64" class="reference-link"></a><span class="header-link octicon octicon-link"></span>删除</h2><pre><code class="lang-html"><div> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> const elmnt = document.getElementById("p1"); elmnt.remove(); </script> </code></pre> <p><a name="Os7Ug"></a></p> <h2 id="4n8gme"><a name="4n8gme" class="reference-link"></a><span class="header-link octicon octicon-link"></span>替换</h2><pre><code class="lang-html"><div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> const para = document.createElement("p"); const node = document.createTextNode("This is new."); para.appendChild(node); const parent = document.getElementById("div1"); const child = document.getElementById("p1"); parent.replaceChild(para, child); </script> </code></pre>