JavaScript insertBefore()
insert具有插入的意思,before具有前面的意思。
那麼有理由猜測,此方法的功能是在某個事物的前面插入另一個事物。
事實的確如此,此方法可以在指定子節點的前面插入一個新的節點。
語法結構:
[JavaScript] 純文字檢視 複製程式碼target.insertBefore(newChild,existingChild)
引數解析:
(1).target:被插入節點和參考節點的父節點。
(2).newChild:必需,要被插入的新節點。
(3).existingChild:必需,規定在哪個節點前面插入新節點。
特別說明:被插入元素和插入參考元素之間是兄弟關係。
瀏覽器支援:
(1).IE瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).opera瀏覽器支援此方法。
(5).火狐瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let obox=document.getElementById("box"); let lis=document.getElementsByTagName("li"); let insertedLi=document.createElement("li"); insertedLi.innerHTML="螞蟻部落插入"; obox.insertBefore(insertedLi,lis[1]); } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> </ul> </body> </html>
程式碼執行效果截圖如下:
上述程式碼在第二個li元素前面插入一個新的li元素。
程式碼分析如下:
(1).首先通過document.getElementById方法獲取box元素物件,它是被插入元素的父元素。
(2).再利用getElementsByTagName方法獲取li元素集合,集合中元素索引從0開始,所以lis[1]返回集合中第二個元素,這一點與陣列類似。
(3).然後再通過document.createElement方法建立一個被插入的li元素,並設定它的內容。
(4).obox.insertBefore(insertedLi,lis[1])在第二個li元素的前面插入新建立的li元素。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let obox=document.getElementById("box"); let lis=document.getElementsByTagName("li"); let insertedLi=document.createElement("li"); insertedLi.innerHTML="螞蟻部落插入"; obox.insertBefore(insertedLi,null); } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> </ul> </body> </html>
程式碼執行效果截圖如下:
如果insertBefore方法第二個引數為null,那麼將新元素插入到父元素的末尾。
這很好理解,既然是null,那麼就是新插入元素的後面沒有元素,自然是被插入到結尾。
特別說明:是null,而不是省略第二個引數,如果省略,則會報錯。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let obox=document.getElementById("box"); let lis=document.getElementsByTagName("li"); obox.insertBefore(lis[2],lis[0]); } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> </ul> </body> </html>
程式碼執行效果截圖如下:
可以看到,確實在第一個li元素前面插入一個新元素。
但需要注意的是,新插入的元素是將原來第三li元素移動到位置一處,而不是拷貝一份再插入。
相關文章
- jQuery insertBefore()jQuery
- 使用 insertBefore 和insertAfter,在指定位置追加與刪除元素
- js便籤筆記(3)——切記:appendChild()、insertBefore()是移動element節點!JS筆記APP
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- 【JavaScript學習】JavaScript物件建立JavaScript物件
- 【轉】eval()函式(javascript) - [javaScript]函式JavaScript
- [Javascript] How javascript read the property?JavaScript
- JavaScript -"this"JavaScript
- javascript ??JavaScript
- This in JavaScriptJavaScript
- “This” is For JavaScriptJavaScript
- javascript thisJavaScript
- JavaScriptJavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- javascript,還是javascript的問題JavaScript
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- 《深入理解JavaScript》——2.3 JavaScript有用嗎JavaScript
- 【JavaScript】--JavaScript總結一覽無餘JavaScript
- 【HTML、JAVASCRIPT、CSS】3、Javascript基本概念HTMLJavaScriptCSS
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript EventJavaScript
- JavaScript BackdoorJavaScript
- JavaScript normalize()JavaScriptORM
- JavaScript setDate()JavaScript
- JavaScript setMinutes()JavaScript
- JavaScript getDate()JavaScript
- JavaScript setHours()JavaScript
- JavaScript setUTCMinutes()JavaScript
- JavaScript setUTCHours()JavaScript
- JavaScript setUTCFullYear()JavaScript
- JavaScript setUTCMonth()JavaScript
- JavaScript setUTCDate()JavaScript
- JavaScript getUTCMinutes()JavaScript
- JavaScript setMonth()JavaScript
- JavaScript getMonth()JavaScript