JavaScript概述四(DOM文档对象模型)

news2024/10/5 17:23:08

1.DOM(Document Object Model)

会把网页里面的元素当成对象去操作,包含对象的属性,属性值,方便我们去 操作网页。
整个页面最终会形成一个对象 :document ,页面里面的所有的元素(如 标签 ) 最终都会转换成 js 里面的对象。

1.1 获取页面的元素(通过选择器)

1.1.1 按id属性查找

格式:document.getElementById("id属性值");

此函数只能返回两种情况,要么是0个对象(即为null),要么是1个。返回的是一个具体的对象。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			window.onload=function(){
			//1.获得input标签的对象
			var input=document.getElementById("mybutton");
			console.log(input);
			//2.修改value的属性值
			var num=3;
			setInterval(function(){
			num--;
			input.value=num;
			if(num==0){
			location.href="https://www.baidu.com";
		}
	},1000);
}
		</script>
	</head>
	<body>
		恭喜你注册成功,
		<input type="button" id="mybutton" value="3" />
		秒后跳转界面。		
	</body>
</html>

最终的效果就是:恭喜你注册成功,3秒后跳转界面-->恭喜你注册成功,2秒后跳转界面-->恭喜你注册成功,1秒后跳转界面-->恭喜你注册成功,0秒后跳转界面;最后直接跳转到百度界面。

1.1.2 通过class查找

格式:document.getElementsByClassName("类名");

返回的是一个HTMLCollection(类数组),具备数组的特性:有下标,有length属性 。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.c1{
				height: 100px;
				width: 100px;
				background-color: burlywood;
			}
			.c2{
				height: 100px;
				width: 100px;
				background-color:chocolate;
			}
		</style>
		<script type="text/javascript">
			window.onload=function(){
				//通过class类名获取标签对象
				var c1=document.getElementsByClassName("c1");
				console.log(c1);
			}
		</script>
	</head>
	<body>
		<div class="c1">跳跳虎</div>
		<div class="c2">东北虎</div>
		<div class="c1">小哭包</div>
	</body>
</html>

 注意:若是使用alert()函数来输出c1,会显示如下结果

1.1.3 通过标签名查找

格式: document.getElementsByTagName("标签名");

返回的同样是一个HTMLCollection(类数组),具备数组的特性:有下标,有length属性 。 

				//通过标签名获取标签对象
				var c1=document.getElementsByClassName("div");
				console.log(c1);

1.1.4 通过name属性查找

后期如果想把标签的元素内容发给java服务器,都需要根据name属性值来完成。

格式:document.getElementsByName("name属性的属性值"); 

返回的是一个NodeList集合(同样可看作一个类数组),比HTMLCollection集合更强大。

注意:只有文档对象才能使用getElement……方法,类数组不具备。当类数组需要使用getElement……方法时,需要使用 getElement……[0]来获取对象。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			//1.获得c1所在的对象
			window.onload=function(){
//				var c1=document.getElementsByClassName("c1");
//				console.log(c1);
				//2.获得d1里面的2个c1
				//先获得d1
				var d1=document.getElementsByClassName("d1");//此时d1是类数组,不是document文档对象
				//var d1=document.getElementsByClassName("d1")[0];
				//再获得c1
				var c1=d1.getElementsByClassName("c1");
				console.log(c1);
			}
		</script>
	</head>
	<body>
		<div class="d1">
			<div class="c1">孙尚香</div>
			<div class="c1">鲁班七号</div>
		</div>
		<div class="c1">貂蝉</div>
		<p class="c1">吕布</p>
	</body>
</html>

因为var d1=document.getElementsByClassName("d1");//此时d1是类数组,不是document文档对象,当使用var c1=d1.getElementsByClassName("c1")来获得c1时,根本就不能获取到c1。此时只需要更改获取d1的代码即可。

var d1=document.getElementsByClassName("d1")[0];

1.1.5 通过document.querySelector() 来选择元素

选择单个元素:

document.querySelector("#id值");
document.querySelector(".class值");

返回的是单个元素对象或者null,类似id选择器 。

console.log(document.querySelector(".d1"))

选择多个元素:

document.querySelectorAll("标签名1,标签名2……");

				console.log(document.querySelectorAll("div,p"));

返回的是NodeList(类数组)。 

1.2 DOM结构

标签名第一级第二级第三极第四级
divHTMLDivElementHTMLElementElementNode
pHTMLParagraphElementHTMLElementElementNode
inputHTMLInputElementHTMLElementElementNode

1.2.1 Element和Node的区别

在网页当中,所有的标签都是Element,也一定是Node ,但是所有的Node不一定是Element,比如 文字,注释,回车,是Node而不是Element。

 

1.2.2 Element的常用属性

1.children:获得当前元素下面的子级别元素,返回的是一个HTMLCollection集合

2.parentElement:获得当前元素的父级元素

3.nextElementSibling:获得当前元素的下一个兄弟元素

4.previousElementSibling:获得当前元素的前一个兄弟元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
		window.onload=function(){
			//以第一个c1为参照物,作为自己
			//1.获得自己的孩子
			var myself=document.getElementsByClassName("c1")[0];
			var child=myself.children;
			console.log(child);
			//2.获得自己的父级元素
			var parent=myself.parentElement;
			console.log(parent);
			//3.获得自己的上一个元素
			var previous=myself.previousElementSibling;
			console.log(previous);
			//4.获得自己的下一个元素
			var next=myself.nextElementSibling;
			console.log(next);
		}
			
		</script>
	</head>
	<body>
		<div id="d1">
			<div>大哥</div>
			<div class="c1">
				<div>儿子</div>
			</div>
			<div>三弟</div>
		</div>
		<div class="c1">二叔</div>
	</body>
</html>

 

5.input标签修改内容: 通过value属性,但是其他一些双标签,可以使用以下两类属性去修改

  • innerHTML:设置或者获取当前对象的标签内容
  • innerText: 设置或者获取当前对象的文本内容
			//5.将大哥改为giegie,并将颜色设置为red
			var previous=myself.previousElementSibling;
			previous.innerText="giegie";
			previous.style.color="red";
			console.log(previous);

 

 

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

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

相关文章

S32K3系列单片机学习

前言 定时器中断&#xff0c;每个平台的实现方式均有差异&#xff0c;从51单片机通过寄存器配置实现定时器周期计数&#xff0c;再到使用HAL库配置STM32的定时器&#xff0c;他们的实现原理都是大同小异的&#xff0c;只不过不同的平台使用的底层库不同&#xff0c;导致实现的…

公司25k招了一个测试员不会自动化,试用期没过就赶走了...

最近翻了一些网站的招聘信息&#xff0c;把一线大厂和大型互联网公司看了个遍&#xff0c;发现市场还是挺火热的&#xff0c;虽说铜三铁四&#xff0c;但是软件测试岗位并没有削减多少&#xff0c;建议大家有空还是多关注和多投简历&#xff0c;不要闭门造车&#xff0c;错过好…

手推FlinkML2.2(一)

Java 快速入门 # 本文档提供了一个关于如何使用Flink ML的快速入门。阅读本文档的用户将被指导提交一个简单的Flink作业&#xff0c;用于训练机器学习模型并提供预测服务。 求助&#xff0c;我卡住了&#xff01;# 如果你遇到困难&#xff0c;请查看社区支持资源。特别是&…

第一个 Servlet 程序

1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1.1、File -> New Project Name:javaservlet2 Location:选择要存放的路径 Language:Java Build system:Maven 点击Create按钮 1.2、Pom.xml引入依赖 依赖包来源&#xff1a; <dependencies> <!-- https…

【Hive实战】探索Hive 2.X以及更早版本的MetaStore

探索Hive 2.X以及更早版本的MetaStore 文章目录 探索Hive 2.X以及更早版本的MetaStore概述配置元数据服务和元数据存储库基础配置参数其他配置参数默认配置配置元服务数据库使用内嵌模式的Derby库使用远程数据存储库 配置元数据服务本地/内嵌服务配置远程服务配置 元数据服务配…

Java Collection源码分析(JDk corretto 11)

文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种&#xff1a;Arrays工具类System类 LinkedList实现类t…

kotlin的let,with,run,apply,also,异同区别

kotlin的let&#xff0c;with&#xff0c;run&#xff0c;apply&#xff0c;also&#xff0c;异同区别 例如&#xff1a; class Person(var name: String, var age: Int) {fun eat() {println("吃饭")}fun work(hour: Int): Int {println("$name $age 工作 $ho…

【论文写作】如何写引言?应该思考什么问题?总体架构!!!

结构 大多数的科技论文都聚焦于简单地说明&#xff0c;做了什么&#xff0c;发现了什么&#xff1f;虽然这个可以帮助你写出一篇研究型论文当中的核心的东西&#xff08;方法论和结果&#xff09;&#xff0c;但是不能完全把引言的部分完成。在这篇文章当中&#xff0c;将展示…

【Python】Python学习笔记(三)条件语句

条件语句 Python中的条件语句与c/cpp基本无异。 if语句 基本结构见以下代码。 Python使用缩进控制if/else语句之间的嵌套关系。 #判断两数是否相等。a int(input(a:)) b int(input(b:))if a b:print(Same) else:print(No Same)elif 代替了cpp中“else if”的写法&#…

数据结构(顺序结构、链式结构、索引结构、散列结构)

文章目录 1.概述2.数据间逻辑关系3.数据的存储结构&#xff08;或物理结构&#xff09;3.1顺序结构3.2链式结构3.3索引结构3.4散列结构 4.运算结构 1.概述 数据结构&#xff0c;就是一种程序设计优化的方法论&#xff0c;研究数据的逻辑结构和物理结构以及它们之间相互关系&am…

STM32 DMA详解

1.DMA简介 DMA (Direct Memory Access) 直接存储器存取 DMA 可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源( 比如想把Flash里的一批数据转运到SRAM里&#xff0c;需要软件触发&#xff0c;使用软件触发之后&a…

NAT网络地址转换技术入门到详解

本文目录 1、NAT简介1.1、SNAT 和IP伪装(Masquerade)1.2、DNAT1.3、Full NAT (也称为Full Cone NAT)1.4、PAT (也称为NAPT) 2、如何通过iptables将一台多网卡的主机配置成NAT路由器3、汇总 本文会从NAT的简介入手&#xff0c;详解NAT技术本身&#xff0c;通过本文&#xff0c;你…

巧用千寻位置GNSS软件| 电力线勘测如何实现?

正如大家所知&#xff0c;电力线勘测是在做电力线路设计之前对设计线路沿途自然环境进行勘察测量&#xff0c;最后把手簿测量数据在电脑端经过转换输出为电力软件专用格式数据的专用功能。 那么在千寻位置GNSS软件中该如何操作完成电力线的勘察测量呢&#xff1f; 点击【测量】…

市场岗位都在通缩,Framework开发就业环境怎么样?

随着 Android 设备的普及和应用领域的不断扩大&#xff0c;Android Framework 开发需求量将会持续增长&#xff0c;并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景&#xff1a; 特定垂直领域的智能设备&#xff1…

写最好的Nacos Server稳定版(nacos-server-2.1.1)在Centos、Docker和Windows上安装部署(单机、集群)教程

写最好的Nacos Server稳定版&#xff08;nacos-server-2.1.1&#xff09;在Centos、Docker和Windows上安装部署&#xff08;单机、集群&#xff09;教程 一、前言二、Nacos Server在 Centos7 安装部署&#xff08;单机模式&#xff09;2.1 下载 nacos-server-2.1.1 安装包2.1.1…

Matplotlib绘图库的高级使用

Matplotlib绘图库的高级使用 Matplotlib的三层结构容器层辅助显示层图像层 Matplotlib的绘图配置设置画布属性绘图保存自定义x与y刻度解决中文显示异常网格显示多次plot绘图标记显示图例多个坐标系显示 Matplotlib的三层结构 Matplotlib从层次结构上分&#xff0c;可以分为三层…

在线安装QT5.15.2+VS2019-16.11.26

在线安装QT5.15.2VS2019-16.11.26 一、安装QT5 官方下载&#xff1a; https://download.qt.io/archive/online_installers/4.5/ 选择【qt-unified-windows-x64-4.5.2-online.exe】 登录账户 需要提前注册&#xff0c;过程省略。 安装位置&#xff08;自定义&#xff09; …

GitHub Repo

GitHub Repo 之前笔记写了 git 和 gitup&#xff08;pullpush&#xff09;&#xff0c;这里记一下 giehub repo 二三事。 权限 我不是很确定 github 的企业版是什么样的&#xff0c;不过我们用的是 gitlab 的企业版&#xff0c;这个是需要通过 vpn 才能连接的&#xff0c;如…

【C语言】基础语法6:字符串和字符处理

上一篇&#xff1a;数组和指针 下一篇&#xff1a;文件操作 ❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大家纠错…

redis7 安装 与 启动

文章目录 1. redis 的 概述2. redis 的 安装3. redis 的启动4. redis 的卸载 1. redis 的 概述 redis : 是 远程 词典服务器 &#xff0c;是 一个基于内存的 键值型 Nosql 数据库. 官方解释 : Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写…