本文已参与「新人创作礼」活动,一起开启掘金创作之路。
在项目上一直都是用数据驱动试图(MVVM)的模式进行开发 对于JS原生的操作很少了,陌生了许多,回顾下增删改查
查
查元素
| 代码 | 说明 | 备注 |
|---|---|---|
| document.getElementById(“id属性值”); | 根据元素绑定的id属性查询一个元素节点对象 | 常用 且id必须唯一 |
| document.getElementsByName(“name属性值”); | 根据元素的name属性值查询一组元素节点对象 [返回数组] | 常用 多用于表单项[多选,下拉] |
| document.getElementsByTagName(“标签名”); | 根据标签名来查询一组元素节点对象 [返回数组] | 常用 用于获取一组相同的标签元素 |
| document.all | 获取页面中的所有元素 | 相当于document.getElementsByTagName(“*”); |
| document.documentElement | 获取页面中html根元素 | |
| document.body | 获取页面中的body元素 | |
| document.getElementsByClassName() | 根据元素的class属性值查询一组元素节点对象 [返回数组] | 这个方法不支持IE8及以下的浏览器 |
| document.querySelector() | 根据CSS选择器去页面中查询一个元素 | 如果匹配到的元素有多个,则它会返回查询到的第一个元素 |
| document.querySelectorAll() | 根据CSS选择器去页面中查询一组元素 | 会将匹配到所有元素封装到一个数组中返回,即使只匹配到一个,也是返回数组。使用则需要通过操作数组方式来使用 |
查元素的指定后代元素
| 代码 | 说明 | 备注 |
|---|---|---|
| 元素.childNodes | 获取当前元素的所有子节点 | 会获取到空白的文本子节点(在IE8及以下的浏览器中,不会将空白文本当成子节点) |
| 元素.children | 获取当前元素的所有子元素 | 不包括空白的文本子节点 |
| 元素.firstChild | 获取当前元素的第一个子节点 | 会获取到空白的文本子节点 |
| 元素.lastChild | 获取当前元素的最后一个子节点 | |
| 元素.parentNode | 获取当前元素的父元素 | |
| 元素.previousSibling | 获取当前元素的前一个兄弟节点 | IE8及以下不支持 |
| 元素.nextSibling | 获取当前元素的后一个兄弟节点 | |
| 元素.firstElementChild | 获取当前元素的第一个子元素 | 不支持IE8及以下的浏览器 |
| 元素.firstChild.nodeValue | 读取第一个子节点的文本内容 |
增
增加操作步骤
创建元素 => 找到父级元素 => 在指定位置插入元素
- 1.创建一个节点元素对象 var li = document.createElement("li");
- 2.创建一个文本节点对象 var liText = document.createTextNode("文本节点对象");
- 3.将文本节点对象绑定给元素节点 li.appendChild(liText);
- 4.将该li元素对象添加对父元素下
//方式一 获取父节点对象和对应子节点对象 var place = document.getElementById("这是父元素"); var li2 = document.getElementById("li2"); place.insertBefore(li,li2); //方式二 不获取父元素方式(自杀行为)
li.parentNode.appendChild(li);
删
- 要删除的元素 => 找到父级元素 => 父元素.removeChild(要删除的元素)
- 支持自杀方式
this.parentNode.removeChild(this)
改
改 => 操作对象中的某个属性,重新赋值即可更改