1、增
1.1 创建一个标签节点
let div1 = document.createElement('div')document.createElement('style')document.createElement('script')document.createElement('li')
1.2 创建一个文本节点
text1 = document.createTextNode('你好')
1.3 标签里面插入文本
div1.appendChild(text1)div1.innerText = '你好'或者div1.textContent = '你好'//但是不能用div1.appendChild('你好') 必须appendChild一个节点 不能appendChild一个字符串
1.4 插入页面中
你创建的标签默认处于JS线程中
必须把它插到head或者body里面,它才会生效
document.body.appendChild(div1)或者已在页面中的元素.appendChild(div1)
2、appendChild
//页面中有div#test1 div#test2let div = document.createElement('div')test1.appendChild(div)test2.appendChild(div)
请问最终div出现在哪里? test2里面
一个元素不能出现在两个地方,除非复制一份
3、删
3.1 两种方法
旧方法:parentNode.childNode(childNode)
新方法:childNode.remove()
3.2 思考:如果一个节点被移出页面(DOM树),可以再次回到页面中吗?
答案:可以的
4、改属性
写标准属性
改class:div.className = 'red blue' (全覆盖)改class:div.classList.add('red')改style:div.style = 'width:200px;color:blue;'改style的一部分:div.style.width = '200px'大小写:div.style.backgroundColor = 'white'改data-*属性:div.dataset.x = 'frank'
读标准属性
div.classLista.hrefdiv.getAttribute('class')/a.getAttribute('href')两种方法都可以,但值可能有些不同
5、改事件处理函数
5.1 div.onclick默认为null
默认点击div不会有任何事情发生
但是如果你把div.onclick改为一个函数fn
那么点击div的时候,浏览器就会调用这个函数
并且是这样调用的fn.call(div.event)
div会被当做this
event则包含了点击事件的所有信息
5.2 div.addEventListener
是div.onclick的升级版
6、改内容
6.1 改文本内容
div.innerText = 'xxx'div.textContent = 'xxx'//两者几乎没有区别
6.2 改HTML内容
div.innerHTML = `<span>你好<span>`
6.3 改标签
div.innerHTML = '' //先清空div.appendChild(div2) //再加内容
7、改爸爸
newParent.appendChild(div)
直接这样就可以了,直接从原来的地方消失
8、查
8.1 查爸爸
node.parentNode或者node.parentElement
8.2 查爷爷
node.parentNode.parentNode
8.3 查子代
node.childNodes或者node.children(用的多)
当子代变化时,两者也会实时变化吗?
8.4 查兄弟姐妹
node.parentNode.childNodes还要排除自己node.parentNode.children 还要排除自己
8.5 查看老大
node.firstNode
8.6 查看老幺
node.lastNode
8.7 查看上一个兄弟
node.previousSiblingnode.previousElementSibling
8.8 查看下一个兄弟
node.nextSiblingnode.nextElementSibling
8.9 遍历一个div里面的所有元素
travel = (node,fn) => {fn(node)if(node.children){for(let i=0;i<node.children.length;i++){travel(node.children[i],fn)}}}travel(div1,(node)=>{console.log(node)})
