JAVAWeb04-DOM

news2024/10/6 0:27:12

1. DOM

1.1 概述

1.1.1 官方文档

地址: https://www.w3school.com.cn/js/js_htmldom.asp

1.1.2 DOM 介绍

  1. DOM 全称是 Document Object Model 文档对象模型
  2. 就是把文档中的标签,属性,文本,转换成为对象来管理

在这里插入图片描述

1.2 HTML DOM(文档对象模型)

  1. 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
  2. HTML DOM 树 对象[属性,方法/函数]

在这里插入图片描述

1.3 document 对象

1.3.1 document 说明

  1. document 它管理了所有的 HTML 文档内容
  2. document 它是一种树结构的文档。
  3. 有层级关系 在 dom 中把所有的标签 都 对象化 (得到这个 html 标签的—>对象–>操作)
  4. 通过 document 可以访问所有的标签对象

1.3.2 doucment 对象方法一览

在这里插入图片描述
文档地址: https://www.w3school.com.cn/js/js_htmldom_document.asp

1.3.3 应用实例

应 用 实 例 1:
点 击 hello world, 弹 出 窗 口 获 内 容
创 建 getElementById.html
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>getElementById的使用</title>
    <!--
        1. 先得到 h1 的 dom对象, 通过 id 获取
        2. 对h1对应的dom对象操作即可
    -->
    <script type="text/javascript">
        // function getValue() {//定义函数
        //     //myHeader 就是dom对象
        //     var myHeader = document.getElementById("myHeader");
        //     //alert(myHeader);//HTMLHeadingElement
        //     //解读 myHeader.innerText 获取到 myHeader的包含的文本
        //     //看看 innerText , innerHTML
        //     alert(myHeader.innerText);//文本 hello world
        //     alert(myHeader.innerHTML);//html <div>hello world</div>
        // }

        //动态绑定,讲过老师,前面老师讲的 js事件章节
        //为了让小伙伴,听得明白一点,快速演示->回去看js事件
        window.onload = function () {
            //1. 获取 myHeader的dom对象
            var myHeader = document.getElementById("myHeader");
            //2. 给myHeader绑定 onclick的事件
            myHeader.onclick = function () {
                alert("动态绑定 内容是= " + myHeader.innerText);
            }
        }
        //理解了基本原理,其它的问题就是API层级

    </script>
</head>
<body>
<!-- 静态绑定一个点击事件 -->
<!--<h1 id="myHeader" οnclick="调用函数()"><div>hello world</div></h1>-->

<h1 id="myHeader"><div>hello world</div></h1>
<p>Click on the header to alert its value</p>
</body>
</html>

应用实例 2:
应 用 实 例 : 完 成 多 选 框 案 例
在这里插入图片描述
getElementsByName.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>getElementsByName 函数</title>
    <script type="text/javascript">
        //完成全选
        function selectAll() {
            //1.获取到 sport 这一组复选框
            var sports = document.getElementsByName("sport");
            //sports 是什么? 是nodeList 即时一个集合
            //alert(sports);
            //2. 拿到[dom ,集合],操作【属性和方法api】泥瓦匠|工程师 清华
            //   遍历 sports, 修改
            for (var i = 0; i < sports.length; i++) {
                sports[i].checked = true;//选中
            }
        }
        //全不选
        function selectNone() {
            //1.获取到 sport 这一组复选框
            var sports = document.getElementsByName("sport");
            //sports 是什么? 是nodeList 即时一个集合
            //alert(sports);
            //2. 拿到[dom ,集合],操作【属性和方法api】
            //不要只做泥瓦匠,培养工程师思维 清华 ---》要培养架构思维
            //   遍历 sports, 修改
            for (var i = 0; i < sports.length; i++) {
                sports[i].checked = false;//全部不选中
            }
        }
        //反选 selectReverse
        function selectReverse() {
            //1.获取到 sport 这一组复选框
            var sports = document.getElementsByName("sport");

            //2. 拿到[dom ,集合],操作【属性和方法api】泥瓦匠|工程师 清华 要培养架构思维
            //   遍历 sports, 修改
            for (var i = 0; i < sports.length; i++) {
                // if(sports[i].checked) {//js true
                //     sports[i].checked = false;
                // } else {
                //     sports[i].checked = true;//选中
                // }
                sports[i].checked = !sports[i].checked;
            }
        }
    </script>
</head>
<body>
你会的运动项目:
<input type="checkbox" name="sport" value="zq" checked="checked">足球
<input type="checkbox" name="sport" value="tq">台球
<input type="checkbox" name="sport" value="ppq">乒乓球 <br/><br/>
<button onclick="selectAll()">全选</button>
<button onclick="selectNone()">全不选</button>
<button onclick="selectReverse()">反选</button>
</body>
</html>

应用实例 3:
完 成 图 片 切 换 案 例
在这里插入图片描述

提醒:为看到效果,请把图片放在相应的位置.
getElementsByTagName.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>getElementsByTagName</title>
    <script type="text/javascript">
        function changeImgs() {
            //1. 得到所有的img
            var imgs = document.getElementsByTagName("img");
            //老师说 imgs 是 HTMLCollections
            alert("猫猫的数量是=" + imgs.length);
            //2. 修改src,遍历修改
            for (var i = 0; i < imgs.length; i++) {
                imgs[i].src = "./img/" + (i+4) +".png";
            }
            
        }
		
		//3课后作业->再评讲
        //思路
        //(1) input 增加id, 可以修改value
        //(2) 根据input 的 value值来决定是切换猫还是狗 if -- else if ---
        //(3) 其它自己先思考
        
		function changeImgs(){
			var input = document.getElementById("in")
			var catImg = ['./img/1.png','./img/2.png','./img/3.png']
			var dogImg = ['./img/4.png','./img/5.png','./img/6.png']
			if(input.value == "查看多少小猫,并切换成小狗"){
				var arr = document.getElementsByTagName("img")
				for(i=0;i<arr.length;i++){
					arr[i].src= dogImg[i];
				}
			}else{
				var arr = document.getElementsByTagName("img")
				for(i=0;i<arr.length;i++){
					arr[i].src= catImg[i];
				}
			}
			
		}		

		function changeVal(){
			var input = document.getElementById("in")
			if(input.value == "查看多少小猫,并切换成小狗"){
				input.value = "查看多少小狗,并切换成小猫"
			}else{
				input.value = "查看多少小猫,并切换成小狗"
			}
		}
    </script>
</head>
<body>
<img src="./img/1.png" height="100">
<img src="./img/2.png" height="100">
<img src="./img/3.png" height="100">
<br/>
<input type="button" onclick="changeImgs()" value="查看多少小猫,并切换成小狗" id="in"/>
<br />
<button id="btn" onclick="changeVal()">点我改变切换内容</button>
</body>
</html>

应用实例 4:
添 加 小 猫 图 片 案 例
在这里插入图片描述

提醒:为看到效果,请把图片放在相应的位置.
createElement.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>createElement</title>
    <script type="text/javascript">
        function addImg() {
            //创建一只小猫 图片,展示在页面
            //1. 创建一只小猫 图片 img,拿到对象好办->ssm -> springboot -> vue
            var img = document.createElement("img");
            //alert(img);//?
            img.src = "./img/1.png";
            img.width = "100";
            //2. 展示, 添加到 doucment.body
            document.body.appendChild(img);
        }
    </script>
</head>
<body>
<input type="button" onclick="addImg()"
       value="点击创建一只小猫~"/>
</body>
</html>

1.4 HTML DOM 节点

1.4.1 基本介绍

在 HTML DOM (文档对象模型)中,每个部分都是节点:

  1. 文档本身是文档节点
  2. 所有 HTML 元素是元素节点
  3. 所有 HTML 属性是属性节点
  4. HTML 元素内的文本是文本节点
  5. 注释是注释节点

1.4.2 节点属性和方法一览

1.HTML DOM Element 对象文档地址: https://www.w3school.com.cn/jsref/dom_obj_all.asp
2.HTML DOM Document 对象文档地址: https://www.w3school.com.cn/jsref/dom_obj_document.asp

1.4.3 节点常用方法

  1. 通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点
  2. appendChild( oChildNode ) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节点

1.4.4 节点常用属性

  1. childNodes 属性,获取当前节点的所有子节点
  2. firstChild 属性,获取当前节点的第一个子节点
  3. lastChild 属性,获取当前节点的最后一个子节点
  4. parentNode 属性,获取当前节点的父节点
  5. nextSibling 属性,获取当前节点的下一个节点 (后一个)
  6. previousSibling 属性,获取当前节点的上一个节点 (前一个)
  7. className 用于获取或设置标签的 class 属性值
  8. innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
  9. innerText 属性,表示获取/设置起始标签和结束标签中的文本

1.4.5 应用实例

需求: 完成以下功能(如图), 点击右侧的按钮,可以得到对应的节点
html-dom.html
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //老师使用动态注册/绑定来演示
        window.onload = function () {

            // 先获取btn01的dom
            var btn01 = document.getElementById("btn01");
            btn01.onclick = function () {
                // 查找id=java节点
                var java = document.getElementById("java");
                alert("java节点文本=" + java.innerText);
            }

            // 查找所有option节点 小技巧: ctrl+home 直接到页面最上面 ctrl + end 页面最下
            var btn02 = document.getElementById("btn02");
            btn02.onclick = function () {
                //查找所有option节点
                //老师梳理(id-->getElementById name-->getElementsByName 元素标签名->getElementsByTagName()
                var options = document.getElementsByTagName("option");
                alert(options); // object HtmlCollection
                for (var i = 0; i < options.length; i++) {
                    alert("值= " + options[i].innerText);
                }
            }
            //查找name=sport的节点
            var btn03 = document.getElementById("btn03");
            btn03.onclick = function () {
                var sports = document.getElementsByName("sport");//NodeList
                for (var i = 0; i < sports.length; i++) {
                    //过滤
                    if (sports[i].checked) {
                        alert("运动是= " + sports[i].value);
                    }
                }
            }

            //查找id=language 下所有li节点
            var btn04 = document.getElementById("btn04");
            btn04.onclick = function () {
                var lis = document.getElementById("language").getElementsByTagName("li");
                for (var i = 0; i < lis.length; i++) {
                    alert(lis[i].innerText);//<li>xxx</li> <input value="xx"/>
                }
            }

            //返回id=sel01 的所有子节点[3种方法]
            var btn05 = document.getElementById("btn05");
            btn05.onclick = function () {
                //var options = document.getElementById("sel01").getElementsByTagName("option");
                //alert(document.getElementById("sel01").childNodes.length);//11=>object text
                //解读
                //1. 如果使用 document.getElementById("sel01").childNodes 获取的是object text 和 object htmloptionelement
                //2. 如果不希望得到text 对象,需要将所有的内容放在一行
                var childNodes = document.getElementById("sel01").childNodes;
                for (var i = 0; i < childNodes.length; i++) {
                    if (childNodes[i].selected) {
                        alert(i + " " + childNodes[i].innerText);
                    }
                }
                alert("======================================================")
                //还有一个以前方法
                //解读
                //1. sel01 是 HtmlSelectElement => 本身就有集合特点
                var sel01 = document.getElementById("sel01");
                for (var i = 0; i < sel01.length; i++) {
                    alert(sel01[i].innerText);
                }
            }

            //返回id=sel01 的第一个子节点
            var btn06 = document.getElementById("btn06");
            btn06.onclick = function () {
                //除了上面的方法外,还可以直接使用属性firstChild
                var sel01 = document.getElementById("sel01");
                alert("xx=" + sel01.firstChild);//老师解读是按照 .childNodes 得到第一个子节点 //object text
                alert("yy=" + sel01[0]);//直接是得到第一个option节点 object htmloptionelement
            }

            //返回id=java 的父节点
            var btn07 = document.getElementById("btn07");
            btn07.onclick = function () {
                var java = document.getElementById("java");
                //alert(java.parentNode);// object HtmlUListElement.
                //alert(java.parentNode.innerHTML);//
                //alert(java.parentNode.childNodes.length);//4
                var childNodes = java.parentNode.childNodes;
                for (var i = 0; i < childNodes.length; i++) {
                    alert("语言= " + childNodes[i].innerText);//java php,c++ py,
                }
            }

            //返回id=ct 的前后兄弟节点
            var btn08 = document.getElementById("btn08");
            btn08.onclick = function () {
                //yyds
                var ct = document.getElementById("ct");
                alert(ct.previousSibling.innerText);//object text , 输出undefined
                alert(ct.previousSibling.previousSibling.innerText);//object htmloptionelement,艳红

                alert(ct.nextSibling.innerText);//object text, 输出undefined
                alert(ct.nextSibling.nextSibling.innerText); //object HtmlOptionElement, 输出春花
            }

            //设置#person的文本域
            var btn10 = document.getElementById("btn10");
            btn10.onclick = function () {
                var person = document.getElementById("person");
                person.innerText = "这是我们最新的介绍";
            }
        }

    </script>
</head>
<body>
<div id="total">
    <div class="inner">
        <P>
            你会的运动项目:
        </P>
        <input type="checkbox" name="sport" value="zq" checked="checked">足球
        <input type="checkbox" name="sport" value="tq">台球
        <input type="checkbox" name="sport" value="ppq">乒乓球 <br/>
        <hr/>
        <P>
            你当前女友是谁:
        </P>
        <select id="sel01">
            <option>---女友---</option>
            <option>艳红</option>
            <option id="ct" value="春桃菇凉">春桃</option>
            <option>春花</option>
            <option>桃红</option>
        </select>
        <hr/>
        <p>
            你的编程语言?
        </p>

        <ul id="language">
            <li id="java">Java~~~</li>
            <li>PHP</li>
            <li>C++</li>
            <li>Python</li>
        </ul>


        <br>
        <br>
        <hr/>
        <p>
            个人介绍:
        </p>
        <textarea name="person" id="person">个人介绍</textarea>
    </div>

</div>
<div id="btnList">
    <div>
        <button id="btn01">查找id=java节点</button>
    </div>
    <div>
        <button id="btn02">查找所有option节点</button>
    </div>
    <div>
        <button id="btn03">查找name=sport的节点</button>
    </div>
    <div>
        <button id="btn04">查找id=language 下所有li节点</button>
    </div>
    <div>
        <button id="btn05">返回id=sel01 的所有子节点</button>
    </div>
    <div>
        <button id="btn06">返回id=sel01 的第一个子节点</button>
    </div>
    <div>
        <button id="btn07">返回id=java 的父节点</button>
    </div>
    <div>
        <button id="btn08">返回id=ct 的前后兄弟节点</button>
    </div>
    <div>
        <button id="btn09">读取id=ct 的 value 属性值</button>
    </div>
    <div>
        <button id="btn10">设置#person的文本域</button>
    </div>
</div>
</body>
</html>

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

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

相关文章

为什么现代企业都在使用ERP系统 它有哪些优势

随着科技的不断发展&#xff0c;企业管理方式也在不断地发生改变。在这个信息化的时代&#xff0c;企业要想取得成功&#xff0c;必须要善于利用先进的信息化技术工具。其中&#xff0c;ERP系统是企业管理中不可或缺的重要工具。本文将探讨现代企业为什么会使用ERP系统&#xf…

CPU占用率高怎么办?正确解决方法在这里!

案例&#xff1a;CPU占用率高怎么解决 【各位朋友&#xff0c;我的电脑现在运行太慢了&#xff0c;同事说可能是CPU占用率太高了&#xff0c;但对本电脑小白来说&#xff0c;完全不知道怎么处理&#xff0c;大家有什么好的方法可以解决这个问题吗&#xff1f;】 在计算机中&a…

快看这些wireshark 命令,必须得会!

wireshark捕获命令 捕获器表达式语法&#xff1a; 限定词三类 Type&#xff1a;host、net、prot 指出其后数字或名字的意义&#xff08;主机&#xff0c;网段&#xff0c;端口&#xff09; Direction&#xff1a;src、dst 指出传输方向 &#xff08;源 、目的&#xff09; …

GcExcel Java Edition 6.0.6 Crack

概述 GrapeCity Documents for Excel&#xff0c;Java 版&#xff0c;是一个编程接口&#xff0c;允许 Java 开发人员以编程方式大规模创建和操作 Excel 文档。GrapeCity Documents for Excel 是一种解决方案&#xff0c;允许开发人员跨 Java 应用程序导入/导出、创建报告和模板…

论文阅读《GlueStick: Robust Image Matching by Sticking Points and Lines Together》

论文地址&#xff1a;https://arxiv.org/abs/2304.02008 源码地址&#xff1a;https://github.com/cvg/GlueStick 概述 针对视角变化时在闭塞、无纹理、重复纹理区域的线段匹配难的问题&#xff0c;本文提出一种新的匹配范式&#xff08;GlueStick&#xff09;&#xff0c;该方…

MySQL性能优化(三)事务与锁详解

文章目录什么是数据库事务&#xff1f;事务的四大特性&#xff1a;ACID事务的开启与结束案例表结构与数据案例事务并发的三大问题&#xff1a;脏读&#xff08;一个事务读取到了其他事务未提交的数据&#xff09;不可重复读&#xff08;一个事务读取到其他事务已提交的数据造成…

Qt在安卓手机输出‘hello,world‘

我也想实现这样的功能。 最开始的参考文章&#xff1a; (2条消息) Qt android 开发环境搭建_逝水流年丶轻染尘的博客-CSDN博客 方案1&#xff1a;(失败) 我之前已经下载过 Qt5.14.2了&#xff0c;所以我想直接添加组件 中间过程参考&#xff1a; (2条消息) Qt更新组件出现&…

敏捷开发模式下如何用 PingCode 这类工具迭代管理

迭代&#xff08;Sprint&#xff09;是 Scrum 敏捷开发框架的核心&#xff0c;正确的迭代可以帮助敏捷团队提高工作交付速度。Scrum 团队以完成迭代待办列表为工作目标&#xff0c;并在迭代结束时交付一定的产品增量。PingCode 以产品待办列表作为迭代管理的核心&#xff0c;因…

java并发编程之美第二章读书笔记

并发编程的其他基础知识 什么是多线程的并发编程 并发: 同一时间段内多个任务同时都在执行,且执行都没有执行结束,强调的是在一个时间段内同时执行,而一个时间段由多个时间积累而成的,所以并发的多个任务在单位时间内并不一定同时执行 并行: 单位时间内多个任务同时在执行…

基于GPT-4免费生成代码的工具!小游戏,管理系统都能生成!

Cursor支持Python、Java、C、JavaScript、C#等等&#xff0c;可AI生成代码&#xff0c;功能非常强大&#xff01;这篇教程将教你如何下载安装&#xff0c;带你玩转Cursor 目录 话不多说&#xff0c;先看能力&#xff1a; 只需要三步&#xff0c;就可以AI出你想要的代码&#x…

测试基础知识

开发模型和测试模型 软件的生命周期 软件的生命周期指的是产品从设想开始到软件不再使用的时间。 软件的生命周期可以分为6个阶段&#xff1a;需求分析&#xff0c;计划&#xff0c;设计&#xff0c;编码&#xff0c;测试&#xff0c;运行维护。 瀑布模型 适用项目&#xf…

[考研数据结构]第3章之栈的基本知识与操作

文章目录 栈的基本概念 栈的实现 顺序栈 共享栈 链栈 栈的基本概念 栈的定义 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表 相关术语 栈顶&#xff08;Top&#xff09;线性表允许进行插入或删除的那一端称之为栈顶栈底&#xff08;Bottom&…

JAVASE基础(二)

这里写目录标题JAVASE基础11.科学计数法12.编码和字符集12.编译格式问题13.类型转换类型级别自动类型转换强制类型转换特殊情况14.final修饰符a.修饰变量b.修饰方法c.修饰类15.scanner使用16.两个数交换引入中间变量位运算数学数方法一数学计数方法二17.扩展赋值运算符&#xf…

递归算法_字符串反转_20230412

递归算法-字符串反转 前言 递归算法对解决重复的子问题非常有效&#xff0c;字符串反转也可以用递归算法加以解决&#xff0c;递归算法设计的关键是建立子问题和原问题之间的相关性&#xff0c;同时需要确立递归退出的条件&#xff1b;如果递归退出的条件无法确定&#xff0c…

【LeetCode: 面试题 17.13. 恢复空格 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Redis安装和配置

目录本章重点Redis安装Redis启动和停止配置后台启动连接前的配置本章重点 主要掌握安装和启动了解redis的配置文件进行配置掌握Redis几种启动方式 Redis安装 下载 Redis官网 点击下载 解压 然后将下载好的压缩包上传到服务器,进行解压! tar zxvf 进行解压 编译 我们要进行编…

4.12每日一练

题目&#xff1a;给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外&#xff0c;这两个数…

学生信息管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87673902 更多系统资源库…

安全运营场景下的机器学习算法应用

观测到一个有意思的现象&#xff1a; 假设把安全划分为 基础安全 和 业务安全&#xff0c;PR类的议题中&#xff0c;会出现分级&#xff1a;基础安全领域&#xff0c;喜欢讲纵深防御&#xff0c;给出一个炫酷的架构图&#xff0c;然后各种技术关键字往上标&#xff1b;业务安全…

Doris集群的安装部署

目录 安装与部署 软硬件配置​ 1、机器选择 2、软件选择 3、环境信息修改和部署架构 4、安装部署Doris 5、启动FE 6、在FE节点启动MySQL客户端 7、在BE节点启动be 8、查看BE状态 8、查看FE状态是否正常 WEBUI 官方建议 安装与部署 该文档主要介绍了部署 Doris 所…