JavaScript中DOM操作

一、DOM(Document Object Model文档对象模型)

  可以将任何的HTML和xml文档描绘成一个由多层次节点构成的结构。

  DOM规定:

    -整个文档是一个文档节点

    -每一个HTML标签都是元素节点

    -HTML标签中的属性是属性节点(注意:DOM4中属性已经不属于节点,childNodes已经不包括属性节点)

    -包含在HTML中的文字是文本节点(包括空格)

    -注释内容是注释节点

      

 

 

 

二、元素节点操作

  1、查找元素节点

   1.1)查找自身

    •   id 找到 HTML 元素
    •   通过标签名找到 HTML 元素
    •   通过类名找到 HTML 元素

    

 

 

   1.2)子节点

   获取所有子节点:

     -childNodes:包括文本节点
     -children:不包括文本节点
  获取第一个节点:
     -firstChild:包括文本节点
     -firstElementChild:不包括文本节点
  获取最后一个子节点同理

    

 

 

 

  1.3)父节点   

    相同点:两者输出结果相同
    不同点:
     parentNode:获取文档层次中的父节点
     parentElement:获取对象层次中的父节点

    

   1.4)兄弟节点

    

 

 

 

  注意:childNodes与children;parentNode与parentElement中

    parentNode和childNodes是符合W3C标准的,可以说比较通用。而另外两个只是IE支持,不是标准,Firefox就不支持

  2、增加节点

  创建元素:为避免频繁刷新DOM,可以先创造代码片段,完成所有节点操作之后统一添加到DOM中
    -createElement(nodeName):创建一个新的节点,并将新节点返回.
      参数:nodeName为必须参数,为标签名。会创建对应的节点

  添加到节点树中
    -父节点.appendChild(新节点):在父节点的内部最后,插入一个新节点。注意参数是节点。
    -父节点.insertBefore(新节点,目标节点):在父节点中,将新节点插入到目标节点之前。
    -源节点.cloneNode():克隆节点
      *参数为空和false时浅克隆(不克隆子节点),参数为true,深克隆(克隆自身及其所有的子节点)
 3、删除、替换节点
    -父节点.replaceChild(新节点,旧节点):用新节点替换旧节点
    -父节点.removeChild(子节点):移除指定的子节点

二、属性节点操作
  属性就是对象身上所保存的数据,CSS样式就是这样的形式(键值对),所以操作属性节点其实就是对DOM元素的样式进行增删改查。
  CSS样式有:行内样式(HTML标签中)、内联样式(页面中使用标签嵌入)、外部样式(引入的外部样式表)

  1、点语法操作属性节点:可读可写
    点语法可以获取的属性:行内样式、通过点语法动态添加的属性、
    不可获取:外部样式、内联样式、行内自定义的样式
    

    2、获取元素当前样式

     1)window.getComputedStyle(要获取的样式的对象,伪元素:不使用设置为null).样式名

        不支持IE8及以下,使用currentStyle代替。

     2)元素.currentstyle.样式名

     注意:以上方式是只读的,不能用于修改。如果要获取当前对象的颜色信息,IE返回的是16进制值,如:#ffffff,而其他浏览器返回的是rgb值,

        如:rgb(255,255,255)

     

 

 

    3、使用attribute方式该方式可读可写

    

     注意:使用attribute方式添加的属性是作为元素节点里的attributes属性对象里的属性添加的,会显示在标签中。

        通过点语法添加的属性不会显示在标签中。作为元素节点的一个属性添加到元素上面,不显示在行内

     4、classList(H5新增)方式

      该属性返回类名,用于元素属性的增删,是只读的,可以使用remove() add() 方法进行修改

      

 

 三、文本节点

  1、nodeValue:返回文本节点的内容,可读可写

    innerHTML:返回元素节点下的HTML代码,可读可写。注意:文本节点会返回underfined

     innerText:

  区别:

  textContent:它的内容则是innerHTML去除所有标签后的内容,它会将innerHTML中的转义字符(<、 什么的)进行换码,但是不对任何html标签进

    行解释,而是直接剔除它们。它也不会对innerHTML中的文本按照HTML的方式进行格式转换,比如多个空格还会原原本本地保留,不会合并

    为一个空格,换行符仍然存在(相反<br/>却不会导致换行)。

  innerText:它的值是经过浏览器解释过的结果:它将元素的innerHTML换码、解释,最终显示出来,然后去除各种格式信息留下的纯文本。它会把

    <br/>换成换行符,会将多个空格并成一个空格对待,而本来的换行符却并不会引起换行,IE会将其当作一个普通的单词边界(一般是空格)。

 

  • textContent 是 Node 对象的属性;
  • innerHTML 是 Element 对象的属性;
  • innerText 是 HTMLElement 对象的属性;

 

   

 

 

   

 

 

 

 

 
posted @ 2019-10-11 20:30  我就是要学习  阅读(376)  评论(0编辑  收藏  举报