交换两个元素在节点中的位置(阿里面试题)

文章介绍了如何使用JavaScript的DOM操作方法`insertBefore`和`replaceChild`来交换HTML中的h3标签和第二个li标签的位置。首先创建一个新的li元素插入到h3标签之前,然后用h3替换第二个li,最后再用原来的li替换新创建的li,从而实现元素交换。
摘要由CSDN通过智能技术生成

相关知识

  • insertBefore方法

parentNode. insertBefore(newNode,referenceNode)

  1. 将newNode插在referenceNode前面
  2. parentNode指的是referenceNode的父节点
  3. 返回值为newNode
  4. referenceNode 为 null 则 newNode 将被插入到子节点的末尾
  • replaceChild方法

parentNode.replaceChild(newChlid,oldChild)
1.新节点替换旧节点,如果新节点在dom中已经存在,会从原来的位置删除
2. parentNode指的是oldChild的父节点
3.返回值为oldChild

题目

如果想要交换h3标签和第二个li标签

 <div class="box">
        <h3 class="title">我是标题标签</h3>
    </div>
    <ul class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

思路:可以使用replaceChild方法将h3标签插在li2的前面,但是2怎么插在h3标签的位置呢,需要生成一个新元素提前插在h3标签的位置

function changeofPosition1(obj1,obj2){
            var newNode=document.createElement("li");
            obj1.parentNode.insertBefore(newNode,obj1);
            var li=obj2.parentNode.replaceChild(obj1,obj2);//两个的顺序就看要返回的是什么
            newNode.parentNode.replaceChild(obj2,newNode);
        }
        var list=document.querySelector(".list");
        var obj1=list.children[1];
        // var obj2=list.children[3];
        var obj2=document.querySelector(".title");
        changeofPosition1(obj1,obj2);

在代码中特别要注意是谁的父节点,注意insertBefore和replaceChil的用法,父节点都是指后面参数的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值