摘要:來看一個在本文檔嵌入一個來自中的節(jié)點(diǎn)的例子節(jié)點(diǎn)的插入在父節(jié)點(diǎn)上調(diào)用方法,參數(shù)是想要插入的子節(jié)點(diǎn),執(zhí)行的結(jié)果是,這個子節(jié)點(diǎn)會被成為父節(jié)點(diǎn)的最后一個子節(jié)點(diǎn)。必須傳入一個或者,不能省略。
1: 節(jié)點(diǎn)的創(chuàng)建
新建一個新節(jié)點(diǎn)的方式主要有三種:
1: createElement()
document.createElement(tagName); //返回一個HTMLElement類型的節(jié)點(diǎn),參數(shù)為字符串類型的標(biāo)簽名字 var p = document.createElement("p"); //
2: createTextNode()
document.createTextNode(text);//返回一個Text類型的節(jié)點(diǎn),參數(shù)為這個節(jié)點(diǎn)里的內(nèi)容,字符串 var text = document.createTextNode("text node content"); //"text node content"
3: cloneNode()
targetElement.cloneNode(deepClone);//它接受一個參數(shù),如果為true,就返回對targetElement的深拷貝,也就是返回targetElement包含它的后代子節(jié)點(diǎn);如果為false,就只返回targetElement本身,不包含任何的子節(jié)點(diǎn)
比如,我們有一段HTML:
我們對"
4: importNode()
document.importNode(externalNode, deep); externalNode: 來自別的document的node, 比方說一個iframe的node deep: 是否深拷貝,默認(rèn)值為false. 在DOM4的時候,在deep缺省的情況下,它的默認(rèn)值是true,但是后來又變?yōu)閒alse。所以為了向前向后兼容,deep永遠(yuǎn)給一個值,不要缺省。
來看一個在本文檔嵌入一個來自iframe中的節(jié)點(diǎn)的例子:
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: 節(jié)點(diǎn)的插入
1: appendChild()
parentNode.appendChild(childNode)
在父節(jié)點(diǎn)上調(diào)用appendChild()方法,參數(shù)是想要插入的子節(jié)點(diǎn),執(zhí)行的結(jié)果是,這個子節(jié)點(diǎn)會被成為父節(jié)點(diǎn)的最后一個子節(jié)點(diǎn)。
假如我們之前有一段HTMl:
我們現(xiàn)在先新建一個"
var lastBook = document.createElement("li"); lastBook.textContent = "last book"; var bookList = document.getElementsByClassName("bookList")[0]; bookList.appendChild(lastBook);
再執(zhí)行完上面的代碼之后,之前的HTML就會變成:
2: insertBefore()
var insertedNode = parentNode.insertBefore(newNode, referenceNode); newNode: 想要插入的節(jié)點(diǎn) referenceNode: 新的節(jié)點(diǎn)插入到referenceNode節(jié)點(diǎn)之前。必須傳入一個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);
執(zhí)行完上面的代碼之后,原來的"
3: insertAdjacentHTML()
element.insertAdjacentHTML(position, HTMLText);//參數(shù)為一段HTML文本 element.insertAdjacentElement(position, Element);//參數(shù)為一個Element element.insertAdjacentText(position, text); //插入一段純文本
以上的三個方法,都是根據(jù)position的值,在特定的位置插入一個節(jié)點(diǎn),只是參數(shù)的類型不一樣。position的值有四個:
1: ‘beforeBegin’ 2: "afterBegin" 3: "beforeEnd" 4: "afterEnd"
以上四個值,駝峰和全小寫都可以。
1: 先來就以上三個不同的方法的使用和效果做一個對比:
還是先準(zhǔn)備一段HTML:
1: element.insertAdjacentHTML(position, HTMLText);
var bookList = document.getElementsByClassName("bookList")[0]; bookList.insertAdjacentHTML("afterBegin","new node
");
執(zhí)行完之后,原來的HTML變成這樣:
2: element.insertAdjacentElement(position, Element);
還是之前的那段HTML,然后我們執(zhí)行:
var bookList = document.getElementsByClassName("bookList")[0]; var newLi = document.createElement("li"); newLi.textContent = "new node"; bookList.insertAdjacentElement("afterBegin", newLi)
執(zhí)行完之后,效果變這樣:
3: element.insertAdjacentText(position, text)
還是之前的那段HTML, 然后我們執(zhí)行:
var bookList = document.getElementsByClassName("bookList")[0]; bookList.insertAdjacentText("afterBegin", "text content")
執(zhí)行之后,會在"
3: 節(jié)點(diǎn)的替換
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);
執(zhí)行完上面的代碼之后呢,之前的HTML就變成了這樣:
4: 節(jié)點(diǎn)的刪除
targetNode.parentNode.removeChild(targetNode);
依然是在目標(biāo)元素的父節(jié)點(diǎn)上調(diào)用這個方法,把目標(biāo)元素作為參數(shù)傳進(jìn)去。
還是我們之前的那段HTML:
我們嘗試著把第一個"
var bookList = document.getElementsByClassName("bookList")[0]; bookList.removeChild(bookList.firstElementChild);
這之后,就只剩下一個"
removeChild()會對父節(jié)點(diǎn)的childNodes產(chǎn)生影響,刪掉了一個節(jié)點(diǎn),它后面的節(jié)點(diǎn)會在childNodes里依次往前移動。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83645.html
摘要:方法可用的屏幕高度窗口可用的屏幕寬度瀏覽器表示的顏色位數(shù)用戶瀏覽器表示的顏色位數(shù)屏幕的像素高度屏幕的像素寬度對象返回前一個返回下一個返回某個具體頁面 事件 事件:鼠標(biāo)事件,鍵盤事件,進(jìn)度事件,表單事件,觸摸事件,拖拉事件,其他常見事件.GlobalEventHandler接口DOM(文檔對象模型)是JavaScript操作網(wǎng)頁的接口,將網(wǎng)頁轉(zhuǎn)為一個樹狀結(jié)構(gòu),所有的節(jié)點(diǎn)都有借口. DO...
摘要:對的兩個主要拓展是選擇和。以下插入標(biāo)記的拓展已經(jīng)納入了規(guī)范。在寫模式下,會根據(jù)指定的字符串創(chuàng)建新的子樹,然后用這個子樹完全替換調(diào)用元素。在刪除帶有時間處理程序或引用了其他對象子樹時,就有可能導(dǎo)致內(nèi)存占用問題。 盡管DOM作為API已經(jīng)非常完善了,但為了實(shí)現(xiàn)更多功能,仍然會有一些標(biāo)準(zhǔn)或?qū)S械耐卣埂?008年之前,瀏覽器中幾乎所有的拓展都是專有的,此后W3C著手將一些已經(jīng)成為事實(shí)標(biāo)準(zhǔn)的專...
摘要:中的所有對象都是以對象的形式實(shí)現(xiàn)的。這意味著中的對象與原生對象的行為或活動特點(diǎn)并不一致。該屬性指向表示整個文檔的文檔節(jié)點(diǎn)。同時由要插入的節(jié)點(diǎn)占據(jù)其位置。返回被移除的節(jié)點(diǎn)。操作類名操作類名時,需要通過屬性添加刪除和替換類名。 Note:IE中的所有DOM對象都是以COM對象的形式實(shí)現(xiàn)的。這意味著IE中的DOM對象與原生Javascript對象的行為或活動特點(diǎn)并不一致。 DOM1級主要定義...
摘要:前言本篇文章以介紹常見的節(jié)點(diǎn)知識元素操作方法為目的,其中也對一些比較容易忽略的問題進(jìn)行簡要說明。此外,還有一些方式可以獲得相關(guān)的元素節(jié)點(diǎn)。利用字符串拼接使用字符串拼接的方法插入元素是效率最高的。 前言 本篇文章以介紹常見的DOM節(jié)點(diǎn)知識、DOM元素操作方法為目的,其中也對一些比較容易忽略的問題進(jìn)行簡要說明。才疏學(xué)淺,如有紕漏之處或建議歡迎留下評論。 Node節(jié)點(diǎn) 首先,簡單看看Node...
閱讀 1631·2021-11-11 10:59
閱讀 2641·2021-09-04 16:40
閱讀 3676·2021-09-04 16:40
閱讀 2996·2021-07-30 15:30
閱讀 1672·2021-07-26 22:03
閱讀 3175·2019-08-30 13:20
閱讀 2238·2019-08-29 18:31
閱讀 451·2019-08-29 12:21