摘要:來看一個在本文檔嵌入一個來自中的節點的例子節點的插入在父節點上調用方法,參數是想要插入的子節點,執行的結果是,這個子節點會被成為父節點的最后一個子節點。必須傳入一個或者,不能省略。
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:
我們對"
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:
我們現在先新建一個"
var lastBook = document.createElement("li"); lastBook.textContent = "last book"; var bookList = document.getElementsByClassName("bookList")[0]; bookList.appendChild(lastBook);
再執行完上面的代碼之后,之前的HTML就會變成:
2: insertBefore()
var insertedNode = parentNode.insertBefore(newNode, referenceNode); newNode: 想要插入的節點 referenceNode: 新的節點插入到referenceNode節點之前。必須傳入一個node或者null,不能省略。
還是上面的一段HTML:
我們嘗試在最后一個"
var bookList = document.getElementsByClassName("bookList")[0]; var lastLi = bookList.lastElementChild; var newLi = document.createElement("li"); newLi.textContent = "new book"; bookList.insertBefore(newLi, lastLi);
執行完上面的代碼之后,原來的"
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:
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:
我們嘗試把第一個"
var bookList = document.getElementsByClassName("bookList")[0]; var oldLi = bookList.firstElementChild; var newLi = document.createElement("li"); newLi.textContent = "new node"; bookList.replaceChild(newLi, oldLi);
執行完上面的代碼之后呢,之前的HTML就變成了這樣:
4: 節點的刪除
targetNode.parentNode.removeChild(targetNode);
依然是在目標元素的父節點上調用這個方法,把目標元素作為參數傳進去。
還是我們之前的那段HTML:
我們嘗試著把第一個"
var bookList = document.getElementsByClassName("bookList")[0]; bookList.removeChild(bookList.firstElementChild);
這之后,就只剩下一個"
removeChild()會對父節點的childNodes產生影響,刪掉了一個節點,它后面的節點會在childNodes里依次往前移動。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83645.html
摘要:方法可用的屏幕高度窗口可用的屏幕寬度瀏覽器表示的顏色位數用戶瀏覽器表示的顏色位數屏幕的像素高度屏幕的像素寬度對象返回前一個返回下一個返回某個具體頁面 事件 事件:鼠標事件,鍵盤事件,進度事件,表單事件,觸摸事件,拖拉事件,其他常見事件.GlobalEventHandler接口DOM(文檔對象模型)是JavaScript操作網頁的接口,將網頁轉為一個樹狀結構,所有的節點都有借口. DO...
摘要:對的兩個主要拓展是選擇和。以下插入標記的拓展已經納入了規范。在寫模式下,會根據指定的字符串創建新的子樹,然后用這個子樹完全替換調用元素。在刪除帶有時間處理程序或引用了其他對象子樹時,就有可能導致內存占用問題。 盡管DOM作為API已經非常完善了,但為了實現更多功能,仍然會有一些標準或專有的拓展。2008年之前,瀏覽器中幾乎所有的拓展都是專有的,此后W3C著手將一些已經成為事實標準的專...
摘要:中的所有對象都是以對象的形式實現的。這意味著中的對象與原生對象的行為或活動特點并不一致。該屬性指向表示整個文檔的文檔節點。同時由要插入的節點占據其位置。返回被移除的節點。操作類名操作類名時,需要通過屬性添加刪除和替換類名。 Note:IE中的所有DOM對象都是以COM對象的形式實現的。這意味著IE中的DOM對象與原生Javascript對象的行為或活動特點并不一致。 DOM1級主要定義...
摘要:前言本篇文章以介紹常見的節點知識元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。此外,還有一些方式可以獲得相關的元素節點。利用字符串拼接使用字符串拼接的方法插入元素是效率最高的。 前言 本篇文章以介紹常見的DOM節點知識、DOM元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。才疏學淺,如有紕漏之處或建議歡迎留下評論。 Node節點 首先,簡單看看Node...
閱讀 1627·2021-11-11 10:59
閱讀 2635·2021-09-04 16:40
閱讀 3672·2021-09-04 16:40
閱讀 2990·2021-07-30 15:30
閱讀 1670·2021-07-26 22:03
閱讀 3172·2019-08-30 13:20
閱讀 2236·2019-08-29 18:31
閱讀 447·2019-08-29 12:21