DOM (Document Object Model)
DOM 节点类型
Document #document => null
DocumentTpe doctype名称 => null
Element elementName => null
Attr 属性名称 => 属性值
Text #text => 节点内容
Comment #comment => 注释文本
DOM 获取节点
const node = document.getElementById(element)
const node = document.getElementsByClassName(className)
const node = document.getElementsByTagName(tagname)
document.getElementsByName(name)
const node = document.querySelector(selector)
const node = document.querySelectorAll(selector)
const node = document.querySelector(selector).firstChild(lastChild)
const node = document.querySelector(selector).firstElementChild(lastElementChild)
const node = document.querySelector(selector).children[1]
const node = document.querySelector(selector).childNodes[1]
const node = document.querySelector('.three')
Object.prototype.index = function () {
let index;
const nodeList = this.parentElement.children
for (let i = 0; i < nodeList.length; i++) {
if (nodeList[i] == this) index = i
}
return index
}
console.log(node.index())
DOM 设置/获取内容
.innerHTML 和.innerText
.innerHTML = 'tet'
DOM 设置/获取元素特性
elementNode.id
elementNode.id = 'value'
elementNode.className
element.classList
elementNode.className = 'className'
elementNode.classList.add('className')
elementNode.classList.remove('className')
<span value="test" name="jack"></span>
span.getAttribute('value')
span.setAttribute('class', 'value')
// 标签自定义特性必须以data-开头
<span data-value="test" data-name="jack" ....></span>
span.dataset //获取data-开头的值,返回一个对象 {value: 'test', name: 'jack'}
span.dataset.test // 获取或设置
DOM节点操作
const div = document.createElement('div')
div.className = 'box1'
cosnt html = '<span>11</span>'
document.body.innerHTML = html
div.removeChild(node)
div.parentElement.removeChild(div)
div.replaceChild(newNode, currentNode)
div.cloneNode([boolean])
boolean: false
boolean: true
div.appendChild(newNode)
div.insertBefore(newNode, div.firstChild)
div.insertBefore(newNode, null)
DOM 遍历
const array = ['one', 'two', 'three', 'four']
array.forEach((currentValue, index, array)=>{
currentCalue =>
inext =>
array =>
return =>
})
const array = ['one', 'two', 'three', 'four']
array.__proto__.result = () => console.log('result')
for (let index in array) {
console.log('index:', index) =>
array[index] =>
}
对于普通对象,没有部署原生的 iterator 接口,直接使用 for...of 会报错
var obj = {
'name': 'Jim Green',
'age': 12
}
for(let key of obj) {
console.log('for of obj', key)
}
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
for (let [key, value] of iterable) {
console.log(value) =>
console.log(key) =>
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!