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

news/2024/4/20 20:16:56/文章来源:https://blog.csdn.net/qq_51768153/article/details/130317567

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//先获得d1var d1=document.getElementsByClassName("d1");//此时d1是类数组,不是document文档对象//var d1=document.getElementsByClassName("d1")[0];//再获得c1var 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,并将颜色设置为redvar previous=myself.previousElementSibling;previous.innerText="giegie";previous.style.color="red";console.log(previous);

 

 

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

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

相关文章

JS-11A/224时间继电器 JOSEF约瑟 板前、板后接线

系列型号&#xff1a; JS-11A/11集成电路时间继电器&#xff1b;JS-11A/12集成电路时间继电器&#xff1b; JS-11A/13集成电路时间继电器&#xff1b;JS-11A/136集成电路时间继电器&#xff1b; JS-11A/137集成电路时间继电器&#xff1b;JS-11A/22集成电路时间继电器&#…

数据结构与算法(三):数论(树形结构、二叉树、二叉搜索树、红黑树、Btree、B+Tree、赫夫曼树、堆树)

数论&#xff08;树形结构、二叉树、二叉搜索树、红黑树、Btree、BTree、赫夫曼树、堆树&#xff09; 树形结构概念 在树形结构里面重要的术语&#xff1a; 结点&#xff1a;树里面的元素。 父子关系&#xff1a;结点之间相连的边 子树&#xff1a;当结点大于1时&#xff0…

华为OD机试真题(Java),数字涂色(100%通过+复盘思路)

一、题目描述 疫情过后&#xff0c;希望小学终于又重新开学了&#xff0c;三年二班开学第一天的任务是将后面的黑板报重新制作。 黑板上已经写上了N个正整数&#xff0c;同学们需要给这每个数分别上一种颜色。 为了让黑板报既美观又有学习意义&#xff0c;老师要求同种颜色的…

LoadRunner参数化最佳实践:让你的性能测试更加出色!

距离上次使用loadrunnr 已经有一年多的时间了。初做测试时在项目中用过&#xff0c;后面项目中用不到&#xff0c;自己把重点放在了工具之外的东西上&#xff0c;认为性能测试不仅仅是会用工具&#xff0c;最近又想有一把好的利器毕竟可以帮助自己更好的完成性能测试工作。这算…

QMS-云质说质量 - 1 张小泉的质量危机

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 引言 百年老店的拍蒜质量门 最近张小泉拍蒜断刀事件&#xff0c;吸引了全民关注&#xff0c;虽然随后发布了“断刀召集令”&#xff0c;但从事件发生到后续拖沓且不专业的应对&#xff0c;张小泉肯定是“失蒜”了。 张小泉…

Spring Security实战(六)—— 跨域与CORS

跨域是一种浏览器同源安全策略&#xff0c;即浏览器单方面限制脚本的跨域访问。 一、认识跨域 跨域&#xff08;Cross-Origin&#xff09;指的是在Web开发中&#xff0c;当一个网页的内容要从不同源&#xff08;即不同的域名、协议或端口&#xff09;获取时&#xff0c;就会发…

ajax的介绍及使用

ajax的介绍 开发流程 前端 ajax:前后端沟通的桥梁 后端 ajax介绍 ajax叫做异步的Javascript和xml ajax通过浏览器与服务器&#xff08;后端&#xff09;进行少量数据交互&#xff0c;进行页面异步更新&#xff08;网页不会重新加载&#xff09; 优点&#xff1a; 减轻服务器负…

Vue3进阶使用详解(node.js、Vue3路由基础项目、axios的使用详细(实现数据分页---前后端分离)、axios加载失败)

Vue3进阶使用详解(node.js、Vue3路由基础项目、axios的使用详细(实现数据分页—前后端分离)、axios加载失败) Vue cli CLI是Commond-Line Interface&#xff0c;翻译为命令界面&#xff0c;又称脚手架。VueCLI是一个官方发布vue.js项目脚手架。使用VueCLI可以快速搭建vue开发…

v-for比v-if优先级更高?面试官:回去等通知吧

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 v-if和v-for哪个优先级更高呢&#xff1f;这是面试官常常问到的一个问题&#xff0c;…

算法训练 Day41 | 动态规划

343. 整数拆分 思路&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 确定递推公式&#xff1a;dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 可以想 dp[i]最…

3.Spring Security实现JWT token验证

目录 1. Spring Security详细介绍 2. Spring Security详细使用 3. Spring Security实现JWT token验证 4. JWT&#xff08;JSON Web Token&#xff0c;JSON令牌&#xff09; 5. Spring Security安全注解 Spring Security实现JWT token验证 Spring Security是Spring提供的一…

【Spring篇】DI相关内容

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、setter注入 1.环境准备 2.注入引用数据类型 3.注入简单数据类型 二、构造器注入 1.环境准备 2.构造器注入引用数据类型 3.构造器注入多个引用数据类型 4.构造器注入多个简单数据类型 …

SAS学习第4章:t检验

前话&#xff1a;分析试验数据的差异&#xff0c;一般都会假设样本值之间或者样本与标准值之间无差异&#xff0c;根据不同方法计算得出的t值、q值、F值等等&#xff0c;均表示两者之间的差异程度&#xff0c;值越大&#xff0c;两者差异越大&#xff0c;该假设越不成立&#x…

Vue3+Three.js+antvG2实战项目 智慧城市(三)

前言 在网上找了很久都没有找到使用Three.js开发智慧城市的免费文章或者免费视频,自己花了一点时间做了一个纯前端的智慧城市项目。 技术栈都是最新的:vue3vitetypeScriptThreeantv G2 源码分享 源码 模型,天空图盒子链接分享(不想下载源码可以只用下这个)提取码1234 20230424_…

TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

https://www.usenix.org/conference/osdi18/presentation/chen 文章目录 TVM: An Automated End-to-End Optimizing Compiler for Deep Learning引言1. 简介2. 总览3. 优化计算图4. 生成张量运算4.1 张量表达式和调度空间4.3 嵌套并行与协作4.3 张量化4.4 显式内存延迟隐藏 5 .…

跌倒检测和识别4:C++实现跌倒检测(含源码,可实时跌倒检测)

跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 目录 跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 1. 前言 2. 跌倒检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;跌倒检测模型训练 …

2023云数据库技术沙龙MySQL x ClickHouse专场成功举办

4月22日&#xff0c;2023首届云数据库技术沙龙 MySQL x ClickHouse 专场&#xff0c;在杭州市海智中心成功举办。本次沙龙由玖章算术、菜根发展、良仓太炎共创联合主办。围绕“技术进化&#xff0c;让数据更智能”为主题&#xff0c;汇聚字节跳动、阿里云、玖章算术、华为云、腾…

【大数据之Hadoop】十九、MapReduce总结

MapTask工作机制 &#xff08;1&#xff09;Read阶段&#xff1a; job的提交流程&#xff1a;待读写的源数据由客户端进行切片划分&#xff0c;划分完成之后提交(切片信息、jar包、xml配置文件)给yarn&#xff0c;yarn开启MrAppMaster&#xff0c;MrAppMaster读取切片信息&…

10.java程序员必知必会类库之邮件

前言 邮件功能在当前互联网应用中已经是很成熟的功能&#xff0c;也是作为java程序员应该掌握的技能。常见使用场景有&#xff1a; 电商软件开电子发票&#xff0c;需要发到用户邮箱里面生产实时报警&#xff0c;需要发到邮箱里面银行软件申请的征信报告&#xff0c;电子账单…

《C++ Primer Plus》(第6版)第17章编程练习

《C Primer Plus》&#xff08;第6版&#xff09;第17章编程练习 《C Primer Plus》&#xff08;第6版&#xff09;第17章编程练习1. 计算输入流中第一个\$之前的字符数目2. 将键盘输入&#xff08;直到模拟的文件尾&#xff09;复制到通过命令行指定的文件中3. 将一个文件复制…