【JavaScript】DOM增删改的操作

简介: 文章目录本期实现功能增新一个子节点(appendChild)在指定的子节点前添加一个新节点(insertBefore)替换子节点(replaceChild)删除指定节点(removeChild)优化:与innerHTML结合使用修改元素(更高效)

本期实现功能

97564548a6f6498687781d1e7419a765.gif

增新一个子节点(appendChild)

将新的子节点添加到指定节点

window.onload = function(){
   document.getElementById('bt1').onclick = function(){
       //创建一个li节点
       var addli1 = document.createElement('li');
       //创建一个城市文本节点
       var citytext = document.createTextNode('浙江');
       //将文本节点设置为li节点的字节点
       addli1.appendChild(citytext);
       //获取ul
       var ul = document.getElementById('uls');
       //将li设置为ul的子节点
       ul.appendChild(addli1);
   }
}

在指定的子节点前添加一个新节点(insertBefore)

语法:父节点.insertBefore(新节点,指定节点);

window.onload = function(){
   document.getElementById('bt2').onclick = function(){
    //创建一个li节点
      var addli2 = document.createElement('li');
        //创建一个文本节点
      var citytext = document.createTextNode('四川');
      //将文本节点设置为li的子节点
      addli2.appendChild(citytext);
      //获取贵阳的li节点
      var guiyang = document.getElementById('guiyang');
      //获取ul节点
      var ul = document.getElementById('uls');
      //在贵阳之前插入li
      ul.insertBefore(addli2,guiyang);
  }
}

替换子节点(replaceChild)

语法:父节点.replaceChild(新节点,旧节点);

window.onload = function(){
  document.getElementById('bt3').onclick = function(){
     //创建一个li节点
       var addli2 = document.createElement('li');
       //创建一个文本节点
       var citytext = document.createTextNode('江西');
       //将文本节点设置为li的子节点
       addli2.appendChild(citytext);
       //获取贵阳的li节点
       var guiyang = document.getElementById('guiyang');
       //获取ul节点
       var ul = document.getElementById('uls');
       //替换贵阳子节点
       ul.replaceChild(addli2,guiyang);
   }
}

删除指定节点(removeChild)

语法:父节点.removeChild(子节点);

window.onload = function(){
   document.getElementById('bt4').onclick = function(){
        //找到天津这个节点
        var tj = document.getElementById('tj');
        //获取它的父节点
        var parent =document.getElementById('uls');
        //删除
        parent.removeChild(tj);
   }
}

优化:与innerHTML结合使用修改元素(更高效)

window.onload = function(){
   document.getElementById('bt5').onclick = function(){
       //创建一个li节点
       var li = document.createElement('li');
       //使用innerHTML写入文本
       li.innerHTML="江苏";
       //获取父节点
       var ul = document.getElementById('uls')
       //将设置为ul的子节点
       ul.appendChild(li);
   }
}            

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function(){
            document.getElementById('bt1').onclick = function(){
                //创建一个li节点
                var addli1 = document.createElement('li');
                //创建一个城市文本节点
                var citytext = document.createTextNode('浙江');
                //将文本节点设置为li节点的字节点
                addli1.appendChild(citytext);
                //获取ul
                var ul = document.getElementById('uls');
                //将li设置为ul的子节点
                ul.appendChild(addli1);
            }
            document.getElementById('bt2').onclick = function(){
                //创建一个li节点
                var addli2 = document.createElement('li');
                //创建一个文本节点
                var citytext = document.createTextNode('四川');
                //将文本节点设置为li的子节点
                addli2.appendChild(citytext);
                //获取贵阳的li节点
                var guiyang = document.getElementById('guiyang');
                //获取ul节点
                var ul = document.getElementById('uls');
                //在贵阳之前插入li
                ul.insertBefore(addli2,guiyang);
            }
            document.getElementById('bt3').onclick = function(){
                //创建一个li节点
                var addli2 = document.createElement('li');
                //创建一个文本节点
                var citytext = document.createTextNode('江西');
                //将文本节点设置为li的子节点
                addli2.appendChild(citytext);
                //获取贵阳的li节点
                var guiyang = document.getElementById('guiyang');
                //获取ul节点
                var ul = document.getElementById('uls');
                //替换贵阳子节点
                ul.replaceChild(addli2,guiyang);
            }
            document.getElementById('bt4').onclick = function(){
                //找到天津这个节点
                var tj = document.getElementById('tj');
                //获取它的父节点
                // var parent =document.getElementById('uls');
                // //删除
                // parent.removeChild(tj);
                //另外一种方法
                tj.parentNode.removeChild(tj);
            }
            document.getElementById('bt5').onclick = function(){
                //创建一个li节点
                var li = document.createElement('li');
                //使用innerHTML写入文本
                li.innerHTML="江苏";
                //获取父节点
                var ul = document.getElementById('uls')
                //将设置为ul的子节点
                ul.appendChild(li);
            }
        }
    </script>
    <style>
        .box{
            display: inline-block;
            background-color: lightblue;
        }
        li{
            display: inline-block;
            background-color: lightgoldenrodyellow;
            margin: 10px;
        }
        .box2{
            display: inline-block;
          } 
        button{
            display: block;
        }
    </style>
</head>
<body>
    <div class="box">
        <p>常驻城市:</p>
        <ul id="uls">
            <li id="tj">天津</li>
            <li id="guiyang">贵阳</li>
            <li>重庆</li>
            <li>北京</li>
        </ul>
    </div>
    <div class="box2">
        <button id="bt1">添加一座城市</button>
        <button id="bt2">在贵阳这个城市之前加入一座城市</button>
        <button id="bt3">加一个新的城市替换贵阳</button>
        <button id="bt4">删除天津</button>
        <button id="bt5">使用innerHTML修改</button>
    </div>
</body>
</html>



相关文章
|
10月前
|
传感器 机器学习/深度学习 算法
【征文计划】从技术框架到源码落地,看懂Rokid 手势识别及AR眼镜自然交互的核心
从技术框架到源码落地,看懂Rokid 手势识别及AR眼镜自然交互的核心
|
8月前
|
Linux C语言 C++
C语言Qt编程基础(零基础入门Qt C语言开发指南)
本文介绍如何在C语言中借助C++封装调用Qt实现GUI开发。通过创建C兼容接口,结合Qt库与C主程序,初学者可快速入门C语言Qt编程,掌握跨语言混合开发技巧,为深入学习Qt打下基础。(238字)
|
运维 监控 API
企业多账号的批量高效管理解决方案
在数智化转型的背景下,全球的企业上云步伐不断加快,越来越多的线下业务场景迁移上云。随着云上业务体量和业务场景复杂度的增加,许多企业的多组织跨部门管理效率,精细化管理质量,以及云上成本面临挑战。
896 2
|
人工智能 算法 安全
AI时代:不可替代的“人类+”职业技能
在生成式人工智能快速发展的背景下,关于“人类工作者是否会被算法取代”的焦虑日益增加。本文探讨了AI对职业的重塑作用,指出真正的挑战在于如何通过职业技能培训重新定义人类的不可替代性。文章分析了替代与创造的辩证关系,强调人机协作时代的核心能力,如架构设计力、情感智慧和伦理决策力,并提出职业技能培训应从岗位技能导向转向能力生态构建。最终,通过系统性培训发展“人类+”特质,使AI成为解放人类潜能的工具,而非竞争对手。
|
SQL 存储 运维
阿里云分布式关系型数据库服务 DRDS
DRDS 是阿里巴巴集团自主研发的分布式数据库中间件产品,专注于解决单机关系型数据库扩展性问题,具备轻量(无状态)、灵活、稳定、高效等特性,稳定运行11年,经历历届双十一核心交易业务和各类行业业务的考验
15687 0
|
JavaScript 数据库 Docker
一个有用的docker entrypoint脚本的范例
通过这个 Entrypoint 脚本,您可以确保在 Docker 容器启动时执行必要的初始化步骤,并且容器可以根据不同的运行时环境进行相应的配置和操作。这个范例展示了如何编写一个灵活且功能强大的 Entrypoint 脚本,使您的 Docker 容器更加可靠和易于管理。
634 3
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
429 4
Vue3分页(Pagination)
这是一个高度可定制的分页组件,支持通过属性设置当前页数、每页条数、数据总数等,并提供了禁用分页、隐藏单页分页、快速跳转等功能。此外,还可以自定义分页的位置、显示的数据条数选项及数据总数的显示格式。组件内置了对多种场景的支持,如禁用状态下的分页操作、不同位置的分页显示等,适用于多种应用界面需求。在线预览展示了各种配置项的效果。
740 1
Vue3分页(Pagination)
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记十:结印动作识别
该项目基于恩培大佬的《火影结印识别》小项目,使用yolov5实现手势识别功能。项目包含数据集准备、模型训练和代码实现,可在无GPU环境下运行。代码利用状态机检测手势序列,完成特定结印后触发音效播放。[GitHub地址](https://github.com/enpeizhao/CVprojects)提供了详细步骤和示例代码。
|
Linux 测试技术 网络安全
【好玩的开源项目】Linux系统之部署吃豆人经典小游戏
【7月更文挑战第18天】Linux系统之部署吃豆人经典小游戏
577 3