DOM

175 阅读3分钟

1.DOM节点

DOM节点主要分为三种:元素节点, 属性节点和文本节点

2 nodeType属性 获取节点类型

  1. 元素节点 DIV,SPAN,H1... 大写标签的名称
  2. 属性节点 id,class,name,style... 小写属性的名称
  3. 文本节点 #text
  4. 注释节点 #comment

Q9KMY`Q6SIO}I{{VRHREY.png

image.png

2. 获取元素节点的方法

id可以不用docoument获取

2.1 document.getElementById( )

直接获取到元素节点

2.2 document.getElementsByClassName( )

通过 [index] 获取到每个元素节点

.3 document.getElementsByTagName( )

通过 [index] 获取到每个元素节点

2.4 document.getElementsByName( )

通过 [index] 获取到每个元素节点

2.5 document.querySelector( ) ---> 直接获取到元素节点

querySelector只能获取到第一个元素节点

2.6 document.querySelectorAll()

通过 [index] 获取到每个元素节点

querySelectorAll 有 forEach() 方法

【注意】querySelector 和 querySelectorAll

1、通过类名获取时要.

2、通过id名获取时要#

3、通过属性获取时要[]

3. 属性

attributes 返回某个元素节点所有属性节点(返回一个数组).

3.1 属性节点操作的三个函数
我们通过三个函数可以操作元素的属性:
  •     getAttribute():通过属性名获取对应的属性值
    
文档元素.属性名也可以获取对应的属性的值,但不同的是getAttribute()统一返回字符,而文档元素.属性名会返回属性实际的值类型
  •     setAttribute():设置一个key-value形式的属性键值对         
    
  •     removeAttribute():移除指定的属性    
    
  •     getAttribute():方法将获取元素中某个属性的值。它和直接使用点语法(,属性)获取属性值的方法有一定区别     
    
  •     setAttribute():方法可以给元素添加属性;如果属性经存在,则会覆盖原来的属性;需要传入两个参数:属性名和属性值.         
    
  •     removeAttributeQ方法可以移除元素的属性。
      
    

【注意】getAttribute,setAttribute,removeAttribute不要去操作动态属性。如(checked,selected,disabled)ed结尾的,只需.checked,.selected.disabled判断真假就能判断动态属性的状态

image.png

4. 元素类相关

4.1 className 设置、获取、清除

4.2 classList ---> 新属性

  • classList.add( ) 添加
  • classList.remove( ) 删除
  • classList.contains( ) 是否存在
  • classList.toggle( ) 切换
  • classList.forEach( ) 遍历

image.png

5. 元素节点间关系的相关属性

儿子节点和父子节点

  • childNodes: 子节点集合 包括文本节点和元素节点,会把换行当作文本节点
  • children 微软的 但是ie 6、7、8会把注释当前元素节点
  • parentNode : 父节点

获取第一个儿子

  • firstElementChild:适用google和火狐,在ie中是undefined;
  • firstChild:适用ie 6 7 8,在google会认错(会认成文本节点),用于获取第一个子节点相当于childNodes(0).

兼容写法:// xx.firstElementChild || xx.firstChild

获取最后一个儿子

  • lastChild:用于获取当前元素节点的最后一个子节点 相当于childNodes[box.childNodes.length-1],适用ie 6 7 8,在google会认错(会认成文本节点);
  • lastElementChild:适用google和火狐,在ie中是undefined.

兼容写法:// xx.lastElementChild || xx.lastChild

同级兄弟间关系的相关属性

  • previousSibling || previousElementSibling:属性返回该节点的前一个同级节点,

兼容写法:xx.previousElementSibling||xx.previousSibling

  • nextSibling || nextElementSibling: 属性返回该节点的后一个同级节点。

兼容写法:xx.nextElementSibling||xx.nextSibling

I7P8Z)NM@4J(Y(Z3(OZSP@Y.png

6、DOM操作

DOM节点操作

DOM节点操作指的是:创建节点、复制节点、插入节点、删除节点和替换节点等。

DOM操作所涉及的方法有:

js里头提供了 insertBefore,没有提供insertAfter

  • createElement();创建一个元素节点
  • appendChild();添加一个新子节点到子节点的末尾
  • createTextNode();创建一个文本节点
  • createComment();创建注释
  • insertBefore();将新节点插入到某节点前面,如果第2个参数是null,等价于appendChild,会将新的元素,插在父节点的最后位置
  • replaceChild():将新节点替换旧节点("新的",被替换)
  • removeChild():移除节点,子元素
  • remove():自杀
  • cloneNode();复制节点, 深浅克隆,默认是浅克隆(false),只会克隆自身,不会克隆子元素,深克隆(true)会克隆自身,还会克隆子元素

image.png

inner.Text和inner.HTML的区别

image.png