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