dom 增删改查

"Hello World, Hello Blog"

Posted by wudimingwo on December 15, 2018

本篇内容来自渡一公开课笔记

查:获取:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//          获取dom元素的基本操作
            document.getElementById();
            document.getElementsByClassName();//ie8 以下不支持
            document.getElementsByName();//基本不用 ie 不支持
            document.getElementsByTagName();
            document.querySelector();//css选择器 ,静态
            document.querySelectorAll();//css选择器,一组,静态.
            
            
            根据节点之间的关系,获取节点/节点有不同类型, dom 只是其中一种.
            parentNode// 父元素,到头是 document
            childNodes// 子节点们 第一层,包含文本节点
            firstChild//第一个节点
            lastChild//最后一个节点
            nextSibling//下一个节点
            previousSibling//前一个节点.
            
            区分不同类型节点,nodetype
            元素节点 -- 1
            属性节点 -- 2
            文本节点 -- 3
            注释节点 -- 8
            document -- 9
            DocumentFragment -- 11
            
            nodeName 返回标签名.
            nodeValue 获取文本节点,注释节点的内容
            attributes 返回dom元素节点的属性集合.
            
            根据元素节点之间的关系,获取元素 /ie9一下不支持 除了children
            parentElement //父元素节点 ,到头是 html
            children //返回当前元素的子节点
            firstElementChild //第一个元素节点 ie不兼容
            lastElementChild // 最后一个元素节点 ie 不兼容
            nextElementSibling// 下一个兄弟元素节点 ie 不兼容
            previousElementSibling // 前一个兄弟元素节点 ie 不兼容
            
            Node.hasChildNodes()// 判断有没有子节点.

image.png

image.png

首先 document的构造函数是,HTMLDocument.prototype 所以上面所有的方法, document都能访问. 问题是Element.prototype上 有没有才决定 div,i,span这些能不能调用. 也就是说 byTagName,byClassName,querySelector 都是能用的.

也就是说大部分都是可以用的, 只有 ById ByName 是只有 document才能用.

如果我们想封装一个方法,让dom元素能够直接调用,就应该定义在dom元素的原型链上, 看图就知道,要么定义在 Element.prototype 上要么定义在Node上


1
2
3
4
5
6
7
8
9
10
        增
        document.createElement('div')
        插
        parent.appendChild(child)
        parent.insertBefore(a,b)
        删
        parent.removeChild(child);// 剪切
        child.remove()// 自尽
        替换
        parent.replaceChild(new,origin)

DOM基本操作 innerHTML innerText / 老版本火狐 textContent

getAttribute(‘class’) setAttribute(‘class’,’mike’)