JavaWeb JavaScript ⑧ DOM编程

在光芒万丈之前,我们都要欣然接受眼下的难堪和不易,接受一个人的孤独和无助,认真做好眼前的每一件事,你想要的都会有

                                                                                                                        —— 24.8.29

一、什么是DOM编程

简单来说:DOM(Document obiect Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程

1.DOM编程如何使页面内容发生改变

利用.html文件生成document对象通过浏览器实时监测更新使页面内容发生改变

 2.document对象的逻辑结构

        树形结构的对象,DOM树

3.DOM树上的结点类型

node结点

        1.元素结点 element 标签

        2.属性结点 attribute 属性

        3.文本结点 text 双标签中间的文字

二、DOM编程API

1.获取页面元素的几种方式

① 在整个文档范围内查找元素结点

通过document对象元素id值获职元素        var els = document.getElementById("username")

根据元素的标签名获取多个同名元素    var els = document.getElementsByTagName("input")

根据元素的name属性值获得多个元素        var els = document.getElementsByName("aaa")

根据元素的class属性值获得多个元素        var els =document.getElementsByclassName("a")

② 在具体元素节点范围内查找子节点

通过父元素获取全部的子元素        var cs=parent.children;

通过父元素获取指定的子元素

        获取第一个子元素        console.log(parent.firstElementchild)

        获取最后一个子元素        console.log(parent.lastElementchild)

        获取第二个子元素        console.log(parent.children[11)

        获取第三个子元素        console.log(parent.children.item(2))

③ 查找指定子元素节点的父节点

根据子元素获取父元素        var child=document.getElementById( username);

根据当前元素获取兄弟元素        var pinput =document.getElementById("password")

获取前一个兄弟元素        console.log(pinput.previousElementsibling)

获取后一个兄弟元素        console.log(pinput.nextElementsibling)

2.操作元素属性值

① 属性操作

操作元素的属性      语法:元素.属性名 =“属性值”
操作元素的样式      语法:元素.style.样式名=“样式值”    原始样式名中的“-”符号转换为驼峰式

② 内部文本操作

只识别文本        语法:元素.innerHTML =“文本”
可以同时识别html代码        元素.innerText =“文本“

3.增删元素

① 对页面的元素进行增删操作

创建元素        var csli = document.createElement("li”);

在父元素中追加子元素        父元素.appendchild(子元素);
在指定元素前增加某个元素        cityul.insertBefore(csli,gzli);
在父元素中,用某个新元素替换原本的子元素        cityul.replacechild(新元素,旧元素)
删除当前元素         元素.remove();
清空元素        元素.innerHTML ="";

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<script>/*DOM编程API1.获得document对象——dom树window.document2.从document中获取要操作的元素① 直接获取通过document对象元素id值获取元素    var el1 = document.getElementById("username")根据元素的标签名获取多个同名元素    var els = document.getElementsByTagName("input")根据元素的name属性值获得多个元素    var els = document.getElementsByName("aaa")根据元素的class属性值获得多个元素  var els = document.getElementsByClassName("a")② 间接获取通过父元素获取子元素    var parent = document.getElementById("div1");通过父元素获取全部的子元素  var cs=parent.children;通过父元素获取指定的子元素  console.log(parent.firstElementChild)    // 获取第一个子元素console.log(parent.lastElementChild)     // 获取最后一个子元素console.log(parent.children[1])          // 获取第二个子元素console.log(parent.children.item(2))     // 获取第三个子元素根据子元素获取父元素    var child = document.getElementById("username");根据当前元素获取兄弟元素    var pinput = document.getElementById("password")获取前一个兄弟元素  console.log(pinput.previousElementSibling)获取后一个兄弟元素  console.log(pinput.nextElementSibling)3.对元素进行操作① 操作元素的属性    语法:元素.属性名 = “属性值”② 操作元素的样式    语法:元素.style.样式名 = “样式值”    原始样式名中的“-”符号转换为驼峰式③ 操作元素的文本    语法:元素.innerHTML = “文本”    只识别文本    元素.innerText = “文本“    可以同时识别html代码④ 增删元素      创建元素    var csli = document.createElement("li");在父元素中追加子元素     父元素.appendChild(子元素);在指定元素前增加某个元素    cityul.insertBefore(csli,gzli);在父元素中,用某个新元素替换原本的子元素    cityul.replaceChild(新元素, 旧元素);删除当前元素    元素.remove();清空元素    元素.innerHTML = "";*/function addCd() {// 创建一个新元素// 创建元素var cdli = document.createElement("li");// 设置子元素的属性和文本cdli.id = "cd";cdli.innerHTML = "成都";// 获取父元素var cityul = document.getElementById("city");// 将子元素放在父元素之中cityul.appendChild(cdli);}    function addGzBefore() {// 创建一个新元素// 创建元素var hzli = document.createElement("li");// 设置子元素的属性和文本hzli.id = "hz";hzli.innerText = "杭州";// 将子元素放入父元素中var cityul = document.getElementById("city");// 在父元素中追加子元素// cityul.insertBefore(新元素, 参考元素);// 定义参考元素var gzli = document.getElementById("gz");cityul.insertBefore(hzli,gzli);}function replaceBj() {// 创建一个新元素// 创建元素var njli = document.createElement("li");// 设置子元素的属性和文本njli.id = "nj";njli.innerText = "南京";// 将子元素放入父元素中var cityul = document.getElementById("city");// 在父元素中,用某个新元素替换原本的子元素// cityul.replaceChild(新元素, 旧元素);var bjli = document.getElementById("bj");cityul.replaceChild(njli, bjli);}// 删除深圳function removeSZ() {var szli=document.getElementById("sz");// 哪个元素调用了remove,则该元素就会从dom树中移除szli.remove();}// 清空城市列表function clearCity() {// 获取父元素var cityul = document.getElementById("city");var fc = cityul.firstChild;while(fc!= null) {fc.remove();fc = cityul.firstChild;}// 方式二// cityul.innerHTML = ""// 方式三// cityul.removeChild(cityul.lastChild)// 方式四// var child = cityul.lastChild;// while(child != null) {//     cityul.removeChild(child);//     child = cityul.lastChild;// }}    </script>
<body><ul id="city"><li id="bj">北京</li><li id="sh">上海</li><li id="gz">广州</li><li id="sz">深圳</li></ul><hr><!-- 目标1:在城市列表的最后添加一个子标签 <li id="cd">成都</li> --><button onclick="addCd()">增加成都</button><!-- 目标2:在城市列表的广州前添加一个子标签 <li id="hz">杭州</li> --><button onclick="addGzBefore()">在广州前插入杭州</button><!-- 目标3:将城市列表中的北京替换为南京 <li id="nj">南京</li> --><button onclick="replaceBj()">替换北京</button><!-- 目标4:将城市列表中删除深圳 <li id="sz">深圳</li> --><button onclick="removeSZ()">删除深圳</button><!-- 目标5:清空城市列表 --><button onclick="clearCity()">清空列表</button></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重大内幕!揭秘数据“零丢失”,全靠它

2017年&#xff0c;某运营商设备扩容&#xff0c;误删80万用户数据… 2020年初疫情期间&#xff0c;某电商公司恶意删库事件&#xff0c;导致业务停机3天&#xff0c;公司赔付1.5亿元人民币 “链家程序员删库”事件&#xff0c;恶意删除公司 9TB 数据&#xff0c;造成公司财务…

鸿蒙HarmonyOS开发:如何灵活运用服务卡片提升用户体验

文章目录 一、ArkTS卡片相关模块二、卡片事件能力说明三、卡片事件的主要使用场景3.1、使用router事件跳转到指定UIAbility3.1.1、卡片内按钮跳转到应用的不同页面3.1.2、服务卡片的点击跳转事件 3.2、通过message事件刷新卡片内容3.2.1、在卡片页面调用postCardAction接口触发…

网络安全的历史

如今&#xff0c;网络安全几乎成为各大公司和利益相关者关注的焦点。但在早期&#xff0c;网络安全的概念非常模糊。 直到多年以后&#xff0c;由于网络攻击和危险实体威胁的频繁发生&#xff0c;网络安全的发展才受到重视。这些措施的发展成为了网络安全的演变。 网络安全起…

CentOS全面停服,国产化提速,央国企信创即时通讯/协同门户如何选型?

01. CentOS停服带来安全新风险&#xff0c; 国产操作系统迎来新的发展机遇 2024年6月30日&#xff0c;CentOS 7版本全面停服&#xff0c;于2014年发布的开源类服务器操作系统——CentOS全系列版本生命周期画上了句号。国内大量基于CentOS开发和适配的服务器及平台&#xff0c…

500Kg载重无线遥控履带式无人车技术详解

500Kg载重无线遥控履带式无人车是一种专为复杂环境与多样化任务设计的高科技产品&#xff0c;具备卓越的机动性、承载能力和无线遥控功能。以下是对其技术特点的详细解析&#xff1a; 一、技术特点 履带式驱动系统 地形适应性&#xff1a;采用履带式驱动&#xff0c;能够…

实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!

今天给大家介绍Adobe研究院新的研究TurboEdit&#xff0c;可以通过文本来编辑图像&#xff0c;通过一句话就能改变图像中的头发颜色、衣服、帽子、围巾等等。而且编辑飞快&#xff0c;<0.5秒。简直是图像编辑的利器。 相关链接 项目&#xff1a;betterze.github.io/TurboE…

问题-解决

1. 在collection中的SetTest4_Student上面 此时我想解决LinkedHashSet的自定义降序身高问题是现在不行了 难道只能在构造器里面完成吗 还是说明只能为int类型 Double.compare(o1.getHeight(),o2.getHeight()) 在这道题中我在使用为什么不通过 Map<String, Integer>…

视频结构化从入门到精通——图像算法类型介绍

视频结构化主要图像算法 1 认识“数组、矩阵和张量” 1.1 什么是维度 在图像算法中&#xff0c;“维度”这个概念非常重要&#xff0c;它描述了数据的结构和形状。在不同的上下文中&#xff0c;维度可能有不同的含义&#xff0c;但总体来说&#xff0c;它们都与数据的排列方式…

【WiFi主要技术学习2】

WiFi协议学习2 WiFi SPEC理解频段信道带宽协商速率安全与加密WiFi主要技术理解BP直接序列扩频(Direct Sequence Spread Spectrum,DSSS)BPSKQPSK正交幅度调制(Quadrature Amplitude Modulation,QAM)互补码键控(Complementary Code Keying,CCK)正交频分复用(Orthogonal…

基于mallat小波变换的图像分解和重建算法matlab仿真,对比不同分解层数图像重建质量

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

axios取消请求CancelToken的原理解析及用法示例

文章目录 一、axios的实例与请求流程二、CancelToken 的作用三、CancelToken 的实现原理四、取消请求的流程五、CancelToken用法六、利用拦截器取消请求1、axios请求拦截器2、axios响应拦截器3、利用路由导航守卫取消请求 一、axios的实例与请求流程 下图是axios实例属性的简图…

Java技术栈 —— Spark入门(三)之实时视频流

Java技术栈 —— Spark入门&#xff08;三&#xff09;之实时视频流转灰度图像 一、将摄像头数据发送至kafka二、Kafka准备topic三、spark读取kafka图像数据并处理四、本地显示灰度图像(存在卡顿现象&#xff0c;待优化) 项目整体结构图如下 参考文章或视频链接[1] Architectur…

破解“目录名称无效”难题:数据恢复实战指南

在数字化生活日益普及的今天&#xff0c;数据存储与管理成为了我们日常不可或缺的一部分。然而&#xff0c;当您尝试访问某个文件夹时&#xff0c;却遇到了“目录名称无效”的错误提示&#xff0c;这无疑会让人感到焦虑和困惑。本文将深入探讨“目录名称无效”这一问题的根源&a…

Excel中使用VBS自定义函数将中文转为拼音首字母

1、在“开发工具”中&#xff0c;点击“Visual Basic”。如果没有“开发工具”&#xff0c;则添加。 2、添加“模块”&#xff0c;在窗口中添加自定义函数。 Function MyGetPYChar(char) MyCodeNumber 65536 Asc(char) If (MyCodeNumber > 45217 And MyCodeNumber <…

2d椭圆拟合学习

算法来自论文《 Direct Least Square Fitting of Ellipses》 《NUMERICALLY STABLE DIRECT LEAST SQUARES FITTING OF ELLIPSES》 相关文章 论文阅读&#xff1a;直接拟合椭圆 Direct Least Square Fitting of Ellipseshttps://zhuanlan.zhihu.com/p/645391510Fitting Elli…

线段树离散化、二分搜索、特别修改

699. 掉落的方块 - 力扣&#xff08;LeetCode&#xff09; 1.如果直接按照原落点的值构造线段树&#xff0c;空间开辟会过大&#xff0c;所以收集所有出现过的点进行离散化 2.方块a落在1--3点&#xff0c;b落在3--4点&#xff0c;如果直接按照落点修改&#xff0c;查询3时位置…

基于Docker搭建Graylog分布式日志采集系统

文章目录 一、简介二、Graylog1、主要特点2、组件3、工作流程介绍4、使用场景 三、Graylog 安装部署1、 安装 docker2、安装docker compose3、 安装graylog4、Graylog控制台 四、springboot集成Graylog 一、简介 Graylog是一个开源的日志管理工具&#xff0c;主要功能包括日志…

go 切片slice学习总结

切片的结构 切片的底层结构&#xff1a; type SliceHeader struct {Data uintptr // 指向底层数组的指针 Len int //长度Cap int //空间容量 } 切片的初始化 1 通过数组或者已有的slice创建新的slice 1.1 使用数组创建切片 通过数组的一部分来初始化切片。 …

数据结构-c/c++实现栈(详解,栈容量可以动态增长)

一.栈的基本介绍 栈是一种只能够在一端进行插入和删除的顺序表。如下图 空栈&#xff1a;表示不含任何元素的栈 栈顶&#xff1a;表示允许进行插入和删除元素的一端 栈底&#xff1a;表示不允许进行插入和删除元素的一端 即栈是一种后进先出的线性表数据结构 二.栈的常见操…

为什么我的手机卡需要快递员给激活?这到底安全吗?

网友咨询&#xff1a;网上申请了一张新卡&#xff0c;本来想着自己激活&#xff0c;没想到快递员先打电话过来说&#xff0c;要身份证给帮助激活&#xff0c;所以我想问一下&#xff0c;网上申请的卡是不是都是快递给激活呢&#xff1f;安不安全呢&#xff1f; 首先要说一下&a…