[JS]梳理原生对DOM的增删改查

151 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在项目上一直都是用数据驱动试图(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)

改 => 操作对象中的某个属性,重新赋值即可更改