DOM 操作
- 一、DOM 操作
- 二、结语
一、DOM 操作
DOM 全名为 Document Object Model,是一整套操作文档流相关内容的属性和方法,这些方法可以用于操作元素修改样式、修改属性、改变位置、添加事件等。
DOM 操作内容:
- 获取元素
可以确定要操作的元素,是重要步骤。
方式:
(1)根据 id 名获取:document.getElementById(‘id 名称’)
可以获取文档流中 id 名对应的一个元素,若有 id 对应的元素,则返回值为该元素,若没有 id 对应的元素,则返回值是 null;
(2)根据元素类名获取:document.getElementsByClassName(‘元素类名’)
可以获取文档流中所有类名对应的元素,返回值必定是一个伪数组,若有类名对应的元素,则有多少取多少,若没有类名对应的元素,则返回空的伪数组;
伪数组指的是长得像数组,排列也按索引排列,但不能使用数组常用方法。
(3)根据元素标签名获取:document.getElementsByTagName(‘元素标签名’)
可以获取文档流中所有标签名对应的元素,返回值必定是一个伪数组,若有标签名对应的元素,则有多少取多少,若没有标签名对应的元素,则返回空的伪数组;
(4)根据选择器获取一个:document.querySelector(‘选择器’)
可以获取文档流中满足选择器规则的 第一个 元素,若有选择器对应的元素,则获取第一个元素,若没有选择器对应的元素,则返回 null;
(5)根据选择器获取一组:document.querySelectorAll(‘选择器’)
可以获取文档流中所有满足选择器规则的元素,返回值必定是一个伪数组,若有选择器对应的元素,则有多少取多少,若没有选择器对应的元素,则返回空的伪数组; - 操作元素内容
(1)操作元素文本内容
语法:
获取元素文本:元素.innerText
只得到文本部分,忽略内部的标签
设置元素文本:元素.innerText = ‘新内容’
新内容作为文本,元素内部有标签时标签会被一同覆盖
(2)操作元素超文本内容
语法:
获取元素文本:元素.innerHTML
标签和文本一同获得
设置元素文本:元素.innerHTML = ‘新内容’
新内容可为标签,且设置后标签语句可生效 - 操作元素属性
(1)原生属性
标签本身自带的属性,如:id src type等
获取属性:元素.属性名
设置属性:元素.属性名 = ‘属性值’
(2)自定义属性
自己所写的属性,无特殊意义,只是在元素身上记录信息
获取属性:元素.getAttribute(‘属性名’)
设置属性:元素.setAttribute(‘属性名’,‘属性值’)
删除属性:元素.removeAttribute(‘属性名’) - 操作元素类名
获取类名:元素.className
设置类名:元素.className = ‘新类名’ - 操作元素行内样式
获取行内样式:元素.style.样式名
设置行内样式:元素.style.样式名 = ‘样式值’
注意:当获取的 CSS 样式名中有 - 时,在 JS 中需改为驼峰命名,如:background-color 要写成 backgroundColor。 - 获取元素非行内样式
获取非行内样式:window.getComputedStyle(元素).样式名
注意:
(1)该方法可以获取行内样式,也可以获取非行内样式
(2)前端 JS 只能设置元素行内样式,不能设置非行内样式 - 节点操作
(1)创建节点
用 JS 代码创造出一个页面原先没有的内容,创建出一个指定的标签元素,返回值是一个创建好的元素节点。
语法:document.createElement(‘标签名称’)
(2)插入节点
将新创建的节点插入到一个已经存在的结构中
语法一:父节点.appendChild(子节点)
作用是将子节点放在父节点内部,并放在最后的位置,父节点通过获取元素的方式得到。
语法二:父节点.insertBefore(要插入的子节点,哪一个子节点的前面)
作用是将子节点放在父节点内部,并且放在指定的某个子节点的前面。
(3)删除节点
把一个已经存在的节点删去
语法一:父节点.removeChild(子节点)
作用是将父节点中对应的子节点删去
语法二:节点.remove()
作用是把自己删去
(4)替换节点
用一个节点替换另一个节点
语法:父节点.replaceChild(换上节点,换下节点)
作用是在父节点内,用换上节点替换掉换下节点
(5)克隆节点
复制一个一样的节点
语法:节点.cloneNode(是否克隆后代节点)
注意:括号内的参数可填可不填,默认为 false,表示不克隆后代节点 - 获取元素尺寸
语法一:
高度:元素.offsetHeight
宽度:元素.offsetWidth
获取的是 元素内容 + padding + border 区域的尺寸
语法二:
高度:元素.clientHeight
宽度:元素.clientWidth
获取的是 元素内容 + padding 区域的尺寸