1、appendChild
添加一個節點到指定的節點的子節點數組中
用法:target.appendChild(newChild)
newChild作為target的子節點插入最後的一子節點之後
來看個這個簡單的執行個體:在id為box-con 的末尾添加一個子節點div
代碼如下 |
複製代碼 |
<div class="btns"><input type="button" value="插入元素" id="creatbtn"/></div> <div id="box-one"> <p class="con2" id="p1">1</p> <p class="con2">2</p> <p class="con2">3</p> </div> 代碼 |
代碼如下 |
複製代碼 |
window.onload =function () {var btn = document.getElementById("creatbtn");btn.onclick =function() {insertEle();}}function insertEle() { var oTest = document.getElementById("box-one");var newNode = document.createElement("div");newNode.innerHTML =" This is a newcon ";//oTest.appendChild(newNode);oTeset.insertBefore(newNode,null); // 這兩種方法均可實現} |
這個insertBefore 的第一個參數 和appendChild的一樣,都是那個新的節點變數,而insert第二個參數不僅可以為null 。也可以這樣寫呢
代碼如下 |
複製代碼 |
function insertEle() { var oTest = document.getElementById("box-one"); var newNode = document.createElement("div"); var reforeNode = document.getElementById("p1"); newNode.innerHTML =" This is a newcon "; oTest.insertBefore(newNode,reforeNode.nextSibling);//建立的元素節點插入到 id為p1後面節點元素的 前面, 也就是說 插入id為P1節點元素的後面。 } |
由於可見insertBefore()方法的特性是在已有的子節點前面插入新的節點但是兩種情況結合起來發現insertBefore()方法插入節點,是可以在子節點列表的任意位置。
2、insertBefore
在現有的子節點前插入一個新的子節點
用法:target.insertBefore(newChild,existingChild)
newChild作為target的子節點插入到existingChild節點之前
existingChild為可選項參數,當為null時其效果與appendChild一樣
DEMO1:
代碼如下 |
複製代碼 |
<SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ var a =document.createElement("span"); var b =document.createTextNode("蝸客css"); a.appendChild(b); document.body.appendChild(a); //預設添加在文檔的最後。 //如果我們想指定位置,那麼得使用insertBefore() } </SCRIPT> |
輸出結果: 蝸客css
代碼如下 |
複製代碼 |
DEMO2: html: <div id="b">測試一</div> <div>測試二</div> <SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ var a =document.createElement("span"); var b =document.createTextNode("蝸客css"); a.appendChild(b); var mubiao = document.getElementById("b"); mubiao.parentNode.insertBefore(a,mubiao); //插入到div b 前面。 // 輸出結果:蝸客css 測試一 測試二 /* parentElement.insertBefore( newElement , targetElement ); |
從上面文法可以看出, 父元素, 新元素,目標元素 是 insertBefore使用的3要素。
其實我們可以不管 父元素, 因為 父元素我們 可以用 目標元素.parentNode 得到。
那麼insertBefore就很好用了。只要給2個參數 : 新元素 和目標元素。
那麼有沒有 insertAfter()方法呢?答案看下個例子。
*/
}
</SCRIPT>
3、insertAfter
在指定節點後添加一個同級的新節點。
用法:insertAfter(newEle, targetEle)
newEle是要新增的節點對象
targetEle是作為insertAfter的目標對象,newEle就是新增到targetEle的後面
我們知道JavaScript沒有insertAfter函數,因此需要自訂insertAfter函數:
代碼如下 |
複製代碼 |
function insertAfter(newEl, targetEl){ var parentEl = targetEl.parentNode; if(parentEl.lastChild == targetEl){ parentEl.appendChild(newEl); }else{ parentEl.insertBefore(newEl,targetEl.nextSibling); } } |
完整執行個體
代碼如下 |
複製代碼 |
<html> <head> <title>appendChild、insertBefore和insertAfter函數</title> </head> <body> <div id="target" style="width:400px;border:2px dashed #666;min_height:300px;_height:300px;"> <div id="subnode" style="border:1px dashed #ee3333;height:100px;margin:3px;text-alien:center"> <b style="font-size:24px;font-weight:bold">subnode</b> </div> </div> <script language="javascript"> function insertAfter(newEl, targetEl){ var parentEl = targetEl.parentNode; if(parentEl.lastChild == targetEl){ parentEl.appendChild(newEl); }else{ parentEl.insertBefore(newEl,targetEl.nextSibling); } } var target = document.getElementById("target"); var subnode = document.getElementById("subnode"); //appendChild var newElement = document.createElement("div"); newElement.id = "newnode"; newElement.style.cssText = "border:1px dashed #3333ee;height:100px;margin:3px;text-alien:center"; newElement.innerHTML = "<b style="font-size:24px;font-weight:bold">appendChild</b>"; target.appendChild(newElement); //insertBefore var beforeElement = document.createElement("div"); beforeElement.id = "beforenode"; beforeElement.style.cssText = "border:1px dashed #3333ee;height:100px;margin:3px;text-alien:center"; beforeElement.innerHTML = "<b style="font-size:24px;font-weight:bold">insertBefore</b>"; target.insertBefore(beforeElement,subnode); //insertAfter var afterElement = document.createElement("div"); afterElement.id = "insertAfter"; afterElement.style.cssText = "border:2px dashed #666;height:100px;width:400px;margin-top:3px;text-alien:center"; afterElement.innerHTML = "<b style="font-size:24px;font-weight:bold">insertAfter</b>"; insertAfter(afterElement,target); </script> </body> </html> |