javascript学习指南_JavaScript的appendChild、insertBefore和insertAfter

更新时间:2017-11-03    来源:网页配色    手机版     字体:

【www.bbyears.com--网页配色】

1、appendChild

添加一个节点到指定的节点的子节点数组中

用法:target.appendChild(newChild)
newChild作为target的子节点插入最后的一子节点之后

来看个这个简单的实例:在id为box-con 的末尾添加一个子节点div

 代码如下



1


2


3


代码

 代码如下

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:

测试一

测试二

 

<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);
    }
}

完整实例

 代码如下



appendChild、insertBefore和insertAfter函数



 
 subnode
 

<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 = "appendChild";
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 = "insertBefore";
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 = "insertAfter";
insertAfter(afterElement,target);

</script>

本文来源:http://www.bbyears.com/wangyezhizuo/36772.html