DOM 节点操作

1.  作为HTML的元素内容

  innerHTML:

读取Element的innerHTML属性作为字符串标记返回那个元素的内容,在元素上设置该属性调用了Web浏览器的解析器,用新字符串内容的解析展现形式替换元素当前内容。通常设置innerHTML效率非常高,甚至在指定 的值需要解析时效率也相当不错,但注意,对innerHTML属性用‘+=’操作符重复追加一小段文本通常效率低下,因为它既要序列化又要解析

  outerHTML:

当查询outerHTML时,返回的HTML或XML标记的字符串包含被查询元素的开头和结尾标签,当设置元素的outHTML时,元素本身被新的内容所替换。只有Element节点定义了outHTML属性。Document节点则无。

  PS:低版本的FF不支持outerHTML,扩展方法如下:

扩展outerHTML

insertAdjacentHTML(sWhere,position):

将任意的HTML标记字符串插入到指定的元素“相邻”的位置, sWhere的值是“beforeBegin”,“afterBegin”,”beforeEnd”,”afterEnd”,position是被插入的HTML字符串

  注:低版本的FF不支持此方法,扩展方法如下:

扩展insertAdjacentHTML

2.作为纯文本的元素内容

  textContent || innerText

  textContent 是标准方法,除了IE8及以下的浏览器都支持,innerText 是IE4引入的,它除了早期的ff外都支持

  两者的区别:

    innerText是需要对innerHTML的值进行

    1)HTML转义(等同于XML转义,对< 、&等转义字符进行处理

    2)经过HTML解释和CSS样式解释

    3)剔除格式信息 (多个空格合并成一个,换行,制表

    经过上述3步后留下的纯文本;innerText不返回<script>元素的内容;同时,它对某些表格元素(table,tbody,tr)是只读属性

    textContent只是经过上述的第一步,没有进行2 3步,只将后代的text节点简单的串联在一起

     ====》来自javascript textContent与innerText的异同分析 ====》

  

查找元素的后代中节点中的所有的Text节点

返回纯文本

=====================================================================

  创建节点

      createElement() /createTextNode() / createComment() /createDocumentFragment() /createElementNS()

      cloneNode(boolean)   true  表示深复制,它及其后代元素都会被复制,false 表示只复制它本身,其余元素不会被复制

     importNode(element, boolean)  第一个参数是一个文档的节点,第二个参数是一个布尔值,与cloneNode()中的参数一样;返回一个适合本文档插入的节点的副本(IE不支持)

 

插入节点

   appendChild() / insertBefore ()

   如果调用appendChild()或insertBefore() 将已存在文档中的一个节点再次插入,那个节点将自动从它当前的位置删除并在新的位置重新插入,没有必要显示删除该节点。

    应用:

表单行排序

posted @ 2013-09-01 15:09  独角xi  阅读(265)  评论(0编辑  收藏  举报