DOM基本操作
DOM 全称document object model 文档对象模型 操作HTML
HTML文档有HTML+css组成 DOM 利用js操作HTML+css的
操作元素节点 element Element 元素节点对象
查 获取元素节点的方式
通过选择器获取
div就是元素的节点(任意的标签都是元素节点)
id就是属性节点(任意的属性都是属性节点)
你好就是文本节点(任意的文本都是文本节点)
<div id="box" class="content" name="divName">你好</div>
id选择器
通过id属性来获取元素 里面的参数为string类型的id,返回值是一个HTMLElement
获取id值为box的元素
var box = document.getElementById("box")console.log(box);
class选择器
通过class属性名来获取对应的元素
它传入的参数为string类型的class名字
返回值是一个HTMLCollectionof<Element>,返回的是一个集合,这个集合里面存储了Element。
HTMLCollection是一个类似数组的一种结构,具备下标同时具备length属性,可能会有多个数据。
但是HTMLCollection并不是一个数组,它不具备数组的方法,只是存在对应的下标和length属性
var content = document.getElementsByClassName("content")
console.log(content);
可以通过下标来获取对应的HTMLcollection里面的元素
console.log(content[0]);
通过name名字来获取
返回的是一个nodeList,nodeList不是HTMLCollection nodeList和HTMLCollection的区别 但是它同样具备对应的下标和length属性,他的方法比HTMLCollection要多
var divName = document.getElementsByName('divName')
console.log(divName);
console.log(divName[0]);
复合选择器
里面的参数为string类型的选择器,返回第一个匹配选择器的元素,返回的是一个element
var selectDiv = document.querySelector('div')
console.log(selectDiv);
返回所有匹配选择器内容 接收的是一个nodeList
var selectAll = document.querySelectorAll('.content')//这个类似于css写法,css里面.box,#box。在这个里也是这样写
console.log(selectAll);
console.log(selectAll[0]);
元素的属性(赋值就是设置 没有赋值就是获取)
id 属性
获取id值 className 属性
获取class名字
title 获取title属性
style 获取对应的样式 (element.style.样式名)
innerHTML 获取元素里面显示的内容(包含了html代码)
innerText 获取元素里面显示的文本 (只包含文本 不包含html代码)
TagName 只读的获取标签名
属性节点的操作
获取所有的属性节点
attributes 属性获取所有的属性节点
从attributes获取的属性节点集合中读取对应的属性节点
通过下标读取 [0]
通过对应的属性名读取 [‘属性名’]
通过getNamedItem 方法进行获取 里面传入的参数为属性名 通过.的方式获取 .id
attributes 属性获取所有的属性节点的Map里面包含的方法
item 根据下标找到对应的属性节点 返回的attr对象
getNamedItem 根据属性名进行获取 返回的attr对象
setNamedItem 根据对应的属性名进行设置 返回的attr对象
removeNamedItem 根据对应的属性名进行删除 返回的attr对象
获取属性值的方法
getAttribute 根据属性名获取属性值 返回的类型是String
setAttribute 根据传入的属性名和属性值进行设置
removeAttribute 根据属性名移除属性 节点关系(属性)
children 属性 获取所有的子元素节点(不包含文本节点)
childNodes 获取所有的子节点 (包含文本节点)
firstChild 获取第一个子节点 (包含文本节点)
lastChild 获取最后一个子节点 (包含文本节点)
parentNode 获取父节点
parentElementNode 获取父元素节点
nextSibling 下一个兄弟
previousSibling 上一个兄弟节点
节点类型获取(属性)
nodeType 1表示元素节点 2表示属性节点 3表示文本节点
nodeValue 获取对应的节点值
nodeName 获取节点的名称
属性设置
对于天生就有的属性通过.属性名直接进行获取或者设置
a.href = '百度一下,你就知道'
对于本身没有的使用setAttribute来进行设置 或者通过getAttribute进行获取
节点操作
节点创建(方法)
元素节点的创建 document.createElement('标签名') 返回的是一个element
属性节点创建 document.createAttribute('属性名') 返回的是一个Attr对象 (必须要指定value值)
文本节点创建 document.createTextNode('文本值') 返回的是一个文本节点
子节点操作(方法)
appendChild 添加子节点
removeChild 删除子节点
replaceChild 替换子节点
cloneNode 克隆节点