javascript实现把一个节点插入到另一个节点之后

DOM提供了一个方法,叫做insertBefore(),其作用是在已有节点之前插入新的子节点。遗憾的是,DOM并没有提供一个insertAfter()的方法—即在一个节点之后插入一个节点。

本文所讲的是如何用JS实现在一个节点之后插入另一个节点,也就是编写一个属于自己的insertAfter()。这儿顺便给出insertBefore()的相关语法,因为在自己编写的insertAfter()方法中,会使用到insertBefore()。

node.insertBefore(newnode,existingnode)
参数             类型        描述
newnode         Node 对象   必需。需要插入的节点对象。
existingnode    Node 对象   可选。在其之前插入新节点的子节点。如果未规定,则 insertBefore 方法会在结尾插入 newnode。                      

以下就是用js实现的insertAfter()代码

function insertAfter(newElement,targetElement){
    var parent = targetElement.parentNode;
    if(parent.lastChild == targetElement){
        parent.appendChild(newElement);
    }else{
        parent.insertBefore(newElement,targetElement.nextSibling);
    }
}

代码本身是很简单的,为了便于理解,还是给出解释。

  1. 函数有两个参数,newElement,targetElement。分别是将被插入的新元素,和目标元素
  2. 我们将目标元素的父元素(parentNode)保存在 变量parent中
  3. 如果目标元素是父元素(parentNode)的最后一个子元素,
    就用appendChild方法把新元素追加到parent元素上,这样新元素就恰好插入到 目标元素之后
  4. 如果目标元素不是父元素(parentNode)的最后一个子元素,用insertBefore方法把新元素插入到目标元素的下一个兄弟元素(targetElement.nextSibling)之前。

这个函数的实现呢,在《Javascript DOM 编程艺术》第七章是有讲到的。如果想了解更多的知识,最好看看原书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值