欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

原生JS的DOM操作之插入元素(代码教程)

程序员文章站 2022-06-29 11:11:50
插入元素主要是:在已有元素前插入元素和在已有元素后插入元素 在已有元素前插入元素 dom提供了insertbefore()方法,这个方法将一个新元素插入到一个现有的元素中 需...

插入元素主要是:在已有元素前插入元素和在已有元素后插入元素

在已有元素前插入元素

dom提供了insertbefore()方法,这个方法将一个新元素插入到一个现有的元素中

需要满足三个条件:

1. 新元素:你想插入的元素 (newelement)

2. 目标元素:你想把这个新元素插入到那个元素(targetelement)之前

3. 父元素:目标元素的父元素(parentelement)

parentelement.insertbefore( newelement , targetelement );

//这里parentelement = targetelement.parentnode
var newele = getelementbyid('#newele'); //新添加的元素
var oldele= getelementbyid('#oldele'); //现有的元素
oldele.parentnode.insertbefore( newele,oldele );
//将newele插入到oldele之前

在已有元素后插入元素

dom并没有提供在已有元素之后插入元素,因此我们需要写一个insertafter();

需要用到的dom属性:

parentnode 属性 lastchild 属性 appendchild() 方法 insertbefore() 方法 nextsibling() 属性

首先,我们需要两个参数:被插入的新元素,已有的元素,

1. 新元素:你想插入的元素 (newelement)

2. 目标元素:你想把这个新元素插入到那个元素(targetelement)之前

function insertafter( newelement, targetelement )

其次,把目标元素的parentnode属性值保存到parent

var parent = targetelement.parentnode;

再次是,检测目标元素是不是parent最后一个子元素,就是比较parent元素的lastchild属性值是否等于目标元素

if( parent.lastchild == targetelemnt )

如果相等,就用appendchild()方法追加到parent元素上,这样新元素就恰好插入到目标元素之后

如果不相等,就把新元素插入到目标元素和目标元素的下一个兄弟节点之间,目标元素的下一个兄弟节点是nextsibling,用insertbefore()方法插入到目标元素下一个兄弟元素之前

parent.insertbefore( newelement, targetelement.nextsiblings ) 

完整代码:

    function insertafter( newelement, targetelement ){
        var parent = targetelement.parentnode;
        if( parent.lastchild == targetelment ){
            parent.appendchild( newelment );
        }else{
            parent.insertbefore( newelement, targetelement.nextsibling );
        }
    } 
    insertafter( newele,oldele );//使用