HTML之JavaScript DOM操作元素(2)

news2025/2/24 17:03:13

HTML之JavaScript DOM操作元素(2)

   4.增删元素
       var element = document.createElement("元素名") 创建新元素
       父元素.appendChild(子元素)             	  	 在父元素中追加子元素
       父元素.insertBefore(新元素,参照元素)    		 在特定元素之前新增元素
       父元素.replaceChild(新元素,被替换元素)          替换特定元素
       元素.remove()                                  删除当前元素
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小标题</title>
    <script>
        /*
        步骤:
            1.获得document DOM树
                window.document(是window的属性)
            2.从document中获取要操作的元素
                1.直接获取
                    var aaa = document.getElementById("username") // 根据元素的id值获取页面上的唯一一个元素,有同名的则返回找到的第一个
                    var bbb = document.getElementsByTagName("input")
                    var ccc = document.getElementsByName("aaa")
                    var ddd = document.getElementsByClassName("a") 
                2.间接获取
                    var cs = div01.children // 获取全部子元素
                    var firstc = div01.firstElementChild// 通过父元素获取第一个子元素
                    var lastc = div01.lastElementChild // 通过父元素获取最后一个子元素
                    var parentE = mmm.parentElement // 通过子元素获取父元素
                    var brotherPe = nnn.previousElementSibling // 获取前面的第一个元素
                    var brotherNe = nnn.nextElementSibling // 获取后面的第一个元素

            3.对元素进行操作
                1.操作元素的属性   元素名.属性名 = ""
                2.操作元素的样式   元素.style.样式名 = ""  样式名 "-" 要进行驼峰转换
                3.操作元素的文本   元素名.innerText   只识别文本
                                  元素名.innerHTML   识别文本的同时可以识别HTML代码
                4.增删元素
                    var element = document.createElement("元素名")// <li></li>
                    父元素.appendChild(子元素)             在父元素中追加子元素
                    父元素.insertBefore(新元素,参照元素)    在特定元素之前新增元素
                    父元素.replaceChild(新元素,被替换元素)  替换特定元素
                    元素.remove()                          删除当前元素
        */
        // 目标1 追加元素
        function addCs() {
            // 1.创建元素
            var newli = document.createElement("li")// <li></li>
            // 2.设置元素的属性和文本
            newli.id = "cs" //<li id = "cs"></li>
            newli.innerText = "长沙"//<li id = "cs">长沙</li>
            // 3.将元素作为子元素放入父元素中
            var parentE = document.getElementById("ul01")
            parentE.appendChild(newli)// 在父元素中追加子元素
        }
        // 目标2 特定位置追加元素
        function addBefore() {
            // 1.创建元素
            var newli = document.createElement("li")// <li></li>
            // 2.设置元素的属性和文本
            newli.id = "cs" //<li id = "cs"></li>
            newli.innerText = "长沙"//<li id = "cs">长沙</li>
            // 3.将元素作为子元素放入父元素中
            var parentE = document.getElementById("ul01")
            var brotherNe = document.getElementById("sz")
            //parentE.insertBefore(新元素,参照元素) 在特定元素之前新增元素
            parentE.insertBefore(newli, brotherNe)
        }
        // 目标3 替换元素
        function replaceSz() {
            // 1.创建元素
            var newli = document.createElement("li")// <li></li>
            // 2.设置元素的属性和文本
            newli.id = "cs" //<li id = "cs"></li>
            newli.innerText = "长沙"//<li id = "cs">长沙</li>
            // 3.元素替换
            var parentE = document.getElementById("ul01")
            var brotherNe = document.getElementById("sz")
            //parentE.replaceChild(新元素,被替换元素) 替换特定元素
            parentE.replaceChild(newli, brotherNe)
        }
        // 目标4 移除特定元素
        function removeSz() {
            // 哪个元素调用remove 就会执行删除哪个元素
            var brotherNe = document.getElementById("sz")
            brotherNe.remove(brotherNe)
        }
        // 目标5 清空列表元素
        function removeAll(){
            // 思路1 获取父元素,然后根据父元素获取父元素的第一个子元素,循环删除父元素的第一个子元素,直到为null,就相当于链表删除
            var dom1 = document.getElementById("ul01")
            var node = dom1.firstChild
            while(node!=null){
                node.remove()
                node = dom1.firstChild
            }
            // 思路2 要清空列表,就是要清空ul里面的东西,可以用标签中间夹文本的思路,直接清空ul标签中间的东西
            var dom2 = document.getElementById("ul01")
            dom2.innerHTML = ""   // innerHTML 与 innerText均可

        }
    </script>
</head>

<body>
    <ul id="ul01">
        <li id="bj">北京</li>
        <li id="sh">上海</li>
        <li id="sz">深圳</li>
        <li id="gz">广州</li>
    </ul>
    <!-- 目标1 在城市列表的最后添加子标签 长沙 -->
    <button id="btn01" onclick="addCs()"> 增加长沙</button>
    <!-- 目标2 在城市列表深圳前增加子标签 长沙 -->
    <button id="btn02" onclick="addBefore()"> 在深圳前增加长沙</button>
    <!-- 目标3 替换目标元素 替换深圳为长沙 -->
    <button id="btn03" onclick="replaceSz()"> 替换深圳为长沙</button>
    <!-- 目标4 删除,删除深圳 -->
    <button id="btn04" onclick="removeSz()"> 移除深圳</button>
        <!-- 目标5 清空列表 -->
    <button id="btn05" onclick="removeAll()"> 清空列表</button>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL 一 数据库基础】深入解析 MySQL 的索引(3)

索引 索引操作 自动创建 当我们为一张表加主键约束(Primary key)&#xff0c;外键约束(Foreign Key)&#xff0c;唯一约束(Unique)时&#xff0c;MySQL会为对应的的列自动创建一个索引&#xff1b;如果表不指定任何约束时&#xff0c;MySQL会自动为每一列生成一个索引并用ROW_I…

【C++】优先级队列宝藏岛

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…

List 接口中的 sort 和 forEach 方法

List 接口中的 sort 和 forEach 方法是 Java 8 引入的两个非常实用的函数&#xff0c;分别用于 排序 和 遍历 列表中的元素。以下是它们的详细介绍和用法&#xff1a; sort 函数 功能 对列表中的元素进行排序。 默认使用自然顺序&#xff08;如数字从小到大&#xff0c;字符…

MusicGPT的本地化部署与远程调用:让你的Windows电脑成为AI音乐工作站

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 在如今快节奏的生活里&#xff0c;音乐不仅能够抚慰我们的心灵&#xff0c;还能激发无限创意。想象一下&#xff0c;在忙碌的工作间隙或闲暇时光中&#xff0c;只需输…

Unity通过Vosk实现离线语音识别方法

标注&#xff1a;deepseek直接生成&#xff0c;待验证 在Unity中实现离线语音识别可以通过集成第三方语音识别库来实现。以下是一个使用 Unity 和 Vosk&#xff08;一个开源的离线语音识别库&#xff09;的简单示例。 准备工作 Vosk&#xff1a;一个开源的离线语音识别库&am…

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…

企业数据集成:实现高效调拨出库自动化

调拨出库对接调出单-v&#xff1a;旺店通企业奇门数据集成到用友BIP 在企业信息化管理中&#xff0c;数据的高效流转和准确对接是实现业务流程自动化的关键。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将旺店通企业奇门的数据无缝集成到用…

数据库管理-第295期 IT架构与爆炸半径(20250221)

数据库管理295期 2025-02-21 数据库管理-第295期 架构与爆炸半径&#xff08;20250221&#xff09;1 术语新解2 硬件&#xff1a;存储VS本地盘3 数据库3.1 多模VS专用3.2 集中式VS分布式 4 公有云VS非公有云总结 数据库管理-第295期 架构与爆炸半径&#xff08;20250221&#x…

基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a/matlab2024b 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频…

DeepSeek私有化专家 | 云轴科技ZStack入选IDC中国生成式AI市场概览

DeepSeek 火爆全球AI生态圈&#xff0c;并引发企业用户大量私有化部署需求。 国际数据公司IDC近日发文《DeepSeek爆火的背后&#xff0c;大模型/生成式AI市场生态潜在影响引人关注》&#xff0c;认为中国市场DeepSeekAI模型的推出在大模型/生成式AI市场上引起了轰动&#xff0c…

npm在install时提示要安装python问题处理

使用npm\yarn\pnpm下载以来的时候&#xff0c;一直提示python异常&#xff0c;有的项目安装了python之后&#xff0c;下载依赖还是异常 而且旧版本项目使用python2,新的使用Python3…很烦 解决方案1&#xff1a;cnpm 安装教程&#xff1a; npm安装cnpm&#xff0c;解决node12\…

如何将MySQL数据库迁移至阿里云

将 MySQL 数据库迁移至阿里云可以通过几种不同的方法&#xff0c;具体选择哪种方式取决于你的数据库大小、数据复杂性以及对迁移速度的需求。阿里云提供了多种迁移工具和服务&#xff0c;本文将为你介绍几种常见的方法。 方法一&#xff1a;使用 阿里云数据库迁移服务 (DTS) 阿…

CSS基础(盒子模型的组成、内容溢出、隐藏元素的方式、样式的继承、元素的默认样式、布局技巧、元素之间的空白问题、行内块元素的幽灵空白问题)

文章目录 1. 盒子模型的组成1.1 内容区1.2 默认宽度1.3 内边距1.3.1 内边距属性1.3.2 复合属性1.3.3 单位1.3.4 注意事项 1.4 边框1.4.1 边框属性1.4.2 复合属性1.4.3 单方向边框1.4.4 边框样式1.4.5 注意事项 1.5 外边距1.5.1 外边距属性1.5.2 复合属性1.5.3 注意事项 1.6 外边…

【第二节】C++设计模式(创建型模式)-抽象工厂模式

目录 引言 一、抽象工厂模式概述 二、抽象工厂模式的应用 三、抽象工厂模式的适用场景 四、抽象工厂模式的优缺点 五、总结 引言 抽象工厂设计模式是一种创建型设计模式&#xff0c;旨在解决一系列相互依赖对象的创建问题。它与工厂方法模式密切相关&#xff0c;但在应用…

【开关电源】汽车前端电源保护电路设计

前言&#xff1a; 汽车电池端子在启动或者保养过程中被反接&#xff0c;如果对这些故障不能及时处理&#xff0c;就可能导致ECU或供电设备被损坏&#xff1b;此外在供电过程中电压也存在不稳定的情况。在EMC测试中ISO16750和ISO7637也会有负电压的情况。 肖特基二极管和 P 沟道…

网络运维学习笔记 017 HCIA-Datacom综合实验01

文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置&#xff08;IP二层VLAN链路聚合&#xff09;ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…

C++单例模板类,继承及使用

前言&#xff1a; 单例模式可以参考如下文章&#xff1a; 我的设计模式&#xff0c;单例模式的设计和实现 c 单例模式的模板类 - 川野散人 - 博客园 1.为什么需要单例模板类&#xff1f; 场景问题&#xff1a; 如果需要100个单例类就需要设计100个单例模式&#xff0c;代…

nodejs:vue 3 + vite 作为前端,将 html 填入<iframe>,在线查询英汉词典

向 doubao.com/chat/ 提问&#xff1a; node.js js-mdict 作为后端&#xff0c;vue 3 vite 作为前端&#xff0c;编写在线查询英汉词典 后端部分&#xff08;express js-mdict &#xff09; 详见上一篇&#xff1a;nodejs&#xff1a;express js-mdict 作为后端&#xff…

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能&#xff0c;每个人都可以通过手机实时拍照上传到大屏幕上,同时还可以发布留言内容&#xff0c;屏幕上会同步滚动播放展示所有人的照片和留言。相比校传统的照片直播功能更加灵活方便&#xff0c;而…

《FFTformer:基于频域的高效Transformer用于高质量图像去模糊》

paper&#xff1a;2211.12250 GitHub&#xff1a;kkkls/FFTformer: [CVPR 2023] Effcient Frequence Domain-based Transformer for High-Quality Image Deblurring CVPR 2023 目录 摘要 1、介绍 2、相关工作 2.1 基于深度CNN的图像去模糊方法 2.2 Transformer及其在图…