在 HTML DOM 中,Element 对象表示 HTML 元素。
Element 对象可以拥有类型为元素节点、文本节点、注释节点的子节点。
NodeList 对象表示节点列表,比如 HTML 元素的子节点集合。
元素也可以拥
nodeType 判断节点类型
1 元素节点 2 属性节点 3 文本节点
<!-- nodeType 判断一个节点的类型1 元素节点3 文本节点2 属性节点--><!--getAttributeNode() 获取属性节点firtChild获取第一个子节点--><p id="app">hello world</p><script>var app = document.getElementById("app");var id = app.getAttributeNode("id");console.log(app.nodeType)console.log(app.firstChild.nodeType)console.log(id.nodeType)</script>
childNodes—所有的子节点 children—只会获取元素节点
<ul id="app"><li>hello world</li><li>hello world</li><li>hello world</li><li>hello world</li></ul><script>// childNodes--包含所有的子节点(不管文本还是元素都包含)// children --只会获取子节点var app = document.getElementById("app");var childs = app.childNodes;var children = app.children;console.log(childs)console.log(children)</script>
push 添加数组元素
<script>var arr = ["html","css"];// pusharr.push("js");console.log(arr);</script>
nodeType,push 获取所有的元素节点
<ul id="app"><li>hello world</li><li>hello world</li><li>hello world</li><li>hello world</li></ul><script>// 获取所有的元素节点var app = document.getElementById("app");var childs = app.childNodes;var arr = [];for(var i=0;i<childs.length;i++){if(childs[i].nodeType == 1){arr.push(childs[i])console.log(i)}// console.log(i)}console.log(arr);</script>
添加节点 createElement,createTextNode
appendChild() 方法向节点添加最后一个子节点
<!-- 增加节点createElement();createTextNode();appendChild();--><div id="app"><div>hello world</div></div></div><script>var app = document.getElementById("app");var p = document.createElement("p");var txt = document.createTextNode("hello world");p.appendChild(txt);app.appendChild(p);</script>
innerHTML,insertBefore()
innerHTML 属性:设置或返回表格行的开始和结束标签之间的 HTML。 insertBefore() :方法在您指定的已有子节点之前插入新的子节点。
<ul id="app"><li>html</li><li id="js">javascript</li></ul><script>// 给元素添加内容innerHTML/*parentNode.insertBefore(newNode,targetNode)*/var app = document.getElementById("app");var js = document.getElementById("js");var li = document.createElement("li");li.innerHTML = "vue";app.insertBefore(li,js);</script>
元素消失 removeChild()
<div id="app"><div id="child">child</div></div><script>// removeChild()让从元素DOM树,渲染树上都消失var app = document.getElementById("app");var child = document.getElementById("child");app.removeChild(child);</script>
替换元素 replaceChild()
repalceChild(newNode,targetNode)
<div id="app"><div id="child">child</div></div><script>var app = document.getElementById("app");var child = document.getElementById("child");var p = document.createElement("p");p.innerHTML = "hello world";app.replaceChild(p,child);</script>
克隆节点
<div id="app"><div class="one">hello world</div></div><script>// cloneNodevar app = document.getElementById("app");var one = document.getElementsByClassName("one")[0];var test = one.cloneNode(true);console.log(test);app.appendChild(test);</script>
element.value
输入框中内容
<input type="text" id="input" value="helloworld"><script>/* element.value */var input = document.getElementById("input");input.onkeyup = function(event){if(event.keyCode ==13 ){console.log(this.value)}}</script>
<head><style>textarea{border:1px solid #333;}</style></head><body><p>还可以输入<em id="em" style="color:red">0</em>/30</p><textarea id="txt" cols="30" rows="10"></textarea><script>var txt = document.getElementById("txt");var em = document.getElementById("em")txt.onkeydown = function(){var length = this.value.length;if(length<=30){em.innerHTML = this.value.length;}else{alert("只能输入30个字符")}}</script>
textarea字数限制(有问题)
<style>textarea{border:1px solid #333;}</style><body><p>还可以输入<em id="em" style="color:red">0</em>/30</p><textarea id="txt" cols="30" rows="10"></textarea><script>var txt = document.getElementById("txt");var em = document.getElementById("em")txt.onkeydown = function(){var length = this.value.length;if(length<=30){em.innerHTML =this.value.length;}else{alert("只能输入30个字符")}}</script>
在javascript中声明的全局变量
<script>/* 在javascript中声明的全局变量是window的属性,方法是window的方法 */var a = 10;function go(){console.log("hello world")}// const window = {// a:10,// go:function(){// console.log("hello world")// }// }// console.log(window.a);// window.go();console.log(a);go();</script>
parentNode 元素的父节点
<ul><li>html <button>删除</button></li><li>css <button>删除</button></li><li>javascript <button>删除</button></li></ul><script>var btns = document.getElementsByTagName("button");for(var i=0;i<btns.length;i++){btns[i].onclick = function(){var temp = window.confirm("确定吗");if(temp){this.parentNode.style.display = "none"}}}</script>
递归 函数调用函数自身
/* 函数调用函数自身,就叫递归 */function show(){setTimeout(function(){console.log(1)show();},1000)}show()
