国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript DOM 6 - 節點的創建,插入,替換,刪除

liuchengxu / 2908人閱讀

摘要:來看一個在本文檔嵌入一個來自中的節點的例子節點的插入在父節點上調用方法,參數是想要插入的子節點,執行的結果是,這個子節點會被成為父節點的最后一個子節點。必須傳入一個或者,不能省略。

1: 節點的創建
新建一個新節點的方式主要有三種:
1: createElement()

document.createElement(tagName); //返回一個HTMLElement類型的節點,參數為字符串類型的標簽名字

var p = document.createElement("p"); //

2: createTextNode()

document.createTextNode(text);//返回一個Text類型的節點,參數為這個節點里的內容,字符串

var text = document.createTextNode("text node content"); //"text node content"

3: cloneNode()

targetElement.cloneNode(deepClone);//它接受一個參數,如果為true,就返回對targetElement的深拷貝,也就是返回targetElement包含它的后代子節點;如果為false,就只返回targetElement本身,不包含任何的子節點

比如,我們有一段HTML:

  • book 1
  • book 2

我們對"

    "元素分別進行深拷貝和淺拷貝:

    4: importNode()

    document.importNode(externalNode, deep);
    
    externalNode: 來自別的document的node, 比方說一個iframe的node
    deep: 是否深拷貝,默認值為false. 在DOM4的時候,在deep缺省的情況下,它的默認值是true,但是后來又變為false。所以為了向前向后兼容,deep永遠給一個值,不要缺省。
    

    來看一個在本文檔嵌入一個來自iframe中的節點的例子:

    var iframe = document.getElementsByTagName("iframe")[0];
    var oldNode = iframe.contentWindow.document.getElementById("myNode");
    var newNode = document.importNode(oldNode, true);
    document.getElementById("container").appendChild(newNode);
    

    2: 節點的插入
    1: appendChild()

    parentNode.appendChild(childNode)
    

    在父節點上調用appendChild()方法,參數是想要插入的子節點,執行的結果是,這個子節點會被成為父節點的最后一個子節點。
    假如我們之前有一段HTMl:

    • book 1
    • book 2

    我們現在先新建一個"

  • "元素,然后把它添加到"
      "里面:

      var lastBook = document.createElement("li");
      lastBook.textContent = "last book";
      var bookList = document.getElementsByClassName("bookList")[0];
      bookList.appendChild(lastBook);

      再執行完上面的代碼之后,之前的HTML就會變成:

      • book 1
      • book 2
      • last book

      2: insertBefore()

      var insertedNode = parentNode.insertBefore(newNode, referenceNode);
      
      newNode: 想要插入的節點
      referenceNode: 新的節點插入到referenceNode節點之前。必須傳入一個node或者null,不能省略。
      

      還是上面的一段HTML:

      • book 1
      • book 2

      我們嘗試在最后一個"

    • "前面插入一個新的"
    • ":

      var bookList = document.getElementsByClassName("bookList")[0];
      var lastLi = bookList.lastElementChild;
      var newLi = document.createElement("li");
      newLi.textContent = "new book";
      bookList.insertBefore(newLi, lastLi);

      執行完上面的代碼之后,原來的"

    • "就變為:

      • book 1
      • new book
      • book 2

      3: insertAdjacentHTML()

      element.insertAdjacentHTML(position, HTMLText);//參數為一段HTML文本
      element.insertAdjacentElement(position, Element);//參數為一個Element
      element.insertAdjacentText(position, text); //插入一段純文本

      以上的三個方法,都是根據position的值,在特定的位置插入一個節點,只是參數的類型不一樣。position的值有四個:

      1: ‘beforeBegin’
      2: "afterBegin"
      3: "beforeEnd"
      4: "afterEnd"

      以上四個值,駝峰和全小寫都可以。


      1: 先來就以上三個不同的方法的使用和效果做一個對比:
      還是先準備一段HTML:

       
      • book 1
      • book 2

      1: element.insertAdjacentHTML(position, HTMLText);

      var bookList = document.getElementsByClassName("bookList")[0];
      bookList.insertAdjacentHTML("afterBegin","

      new node

      ");

      執行完之后,原來的HTML變成這樣:

      2: element.insertAdjacentElement(position, Element);
      還是之前的那段HTML,然后我們執行:

      var bookList = document.getElementsByClassName("bookList")[0];
      var newLi = document.createElement("li");
      newLi.textContent = "new node";
      bookList.insertAdjacentElement("afterBegin", newLi)
      

      執行完之后,效果變這樣:

      3: element.insertAdjacentText(position, text)
      還是之前的那段HTML, 然后我們執行:

      var bookList = document.getElementsByClassName("bookList")[0];
      bookList.insertAdjacentText("afterBegin", "text content")
      

      執行之后,會在"

        "的最開頭添加一段純文本。

        3: 節點的替換

        oldNode.parentNode.replaceChild(newNode, oldNode);

        還是之前的那段HTML:

        • book 1
        • book 2

        我們嘗試把第一個"

      • "元素換掉:

        var bookList = document.getElementsByClassName("bookList")[0];
        var oldLi = bookList.firstElementChild;
        var newLi = document.createElement("li");
        newLi.textContent = "new node";
        bookList.replaceChild(newLi, oldLi);

        執行完上面的代碼之后呢,之前的HTML就變成了這樣:

        • new node
        • book 2

        4: 節點的刪除

        targetNode.parentNode.removeChild(targetNode);

        依然是在目標元素的父節點上調用這個方法,把目標元素作為參數傳進去。
        還是我們之前的那段HTML:

        • book 1
        • book 2

        我們嘗試著把第一個"

      • "刪掉:

        var bookList = document.getElementsByClassName("bookList")[0];
        bookList.removeChild(bookList.firstElementChild);

        這之后,就只剩下一個"

      • "元素了:

        • book 2

        removeChild()會對父節點的childNodes產生影響,刪掉了一個節點,它后面的節點會在childNodes里依次往前移動。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83645.html

相關文章

  • 前端_JavaScript_API

    摘要:方法可用的屏幕高度窗口可用的屏幕寬度瀏覽器表示的顏色位數用戶瀏覽器表示的顏色位數屏幕的像素高度屏幕的像素寬度對象返回前一個返回下一個返回某個具體頁面 事件 事件:鼠標事件,鍵盤事件,進度事件,表單事件,觸摸事件,拖拉事件,其他常見事件.GlobalEventHandler接口DOM(文檔對象模型)是JavaScript操作網頁的接口,將網頁轉為一個樹狀結構,所有的節點都有借口. DO...

    tunny 評論0 收藏0
  • JavaScript高級程序設計》(第3版)讀書筆記 第11章 DOM拓展

    摘要:對的兩個主要拓展是選擇和。以下插入標記的拓展已經納入了規范。在寫模式下,會根據指定的字符串創建新的子樹,然后用這個子樹完全替換調用元素。在刪除帶有時間處理程序或引用了其他對象子樹時,就有可能導致內存占用問題。 盡管DOM作為API已經非常完善了,但為了實現更多功能,仍然會有一些標準或專有的拓展。2008年之前,瀏覽器中幾乎所有的拓展都是專有的,此后W3C著手將一些已經成為事實標準的專...

    luck 評論0 收藏0
  • Javascript--DOM

    摘要:中的所有對象都是以對象的形式實現的。這意味著中的對象與原生對象的行為或活動特點并不一致。該屬性指向表示整個文檔的文檔節點。同時由要插入的節點占據其位置。返回被移除的節點。操作類名操作類名時,需要通過屬性添加刪除和替換類名。 Note:IE中的所有DOM對象都是以COM對象的形式實現的。這意味著IE中的DOM對象與原生Javascript對象的行為或活動特點并不一致。 DOM1級主要定義...

    jsyzchen 評論0 收藏0
  • JavaScript筆記——常見DOM知識

    摘要:前言本篇文章以介紹常見的節點知識元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。此外,還有一些方式可以獲得相關的元素節點。利用字符串拼接使用字符串拼接的方法插入元素是效率最高的。 前言 本篇文章以介紹常見的DOM節點知識、DOM元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。才疏學淺,如有紕漏之處或建議歡迎留下評論。 Node節點 首先,簡單看看Node...

    madthumb 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<