09—DOM和BOM

一、DOM

1、HTML DOM (文档对象模型)

  1. 文档对象模型(Document Object Model,DOM)是表示和操作HTML和XML文档内容的基础API。
  2. 当网页被加载时,浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。 
  3. Document和Element是两个重要的DOM类。

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。通过 DOM,你可以访问所有的 HTML 元素,连同它们所包含的文本和属性。

HTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。

HTML DOM 模型被构造为对象的树:

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

2、获取和设置HTML元素内容和属性

1、获取HTML元素:

通常,通过 JavaScript可以操作 HTML 元素。

为了做到这件事情,必须首先找到该元素。有五种方法来做这件

  • 用指定ID选取元素
  1. 任何HTML元素都可以有一个id元素,但在文档中该值必须唯一,即同一个文档中的元素不能出现有相同的ID。可以用Document对象的getElementById()方法选取特定ID的元素。返回一个NodeList对象(类数组对象)。
  2. 如果有多个相同ID名的页面元素,只会获取到第一个,所以id不可以同名
  3. 如果没有获取带id元素则会返回一个null

本例选取 id="intro" 元素:

如果找到该元素,则该方法将以对象(在 x 中)的形式返回该元素。

如果未找到该元素,则 x 将包含 null。

  • 用指定名字选取元素
  1. 一些HTML元素拥有name属性,name属性值非唯一,所以多个元素可能有相同的名字。
  2. 基于name属性的值选取HTML元素,可以使用Document对象的getElementsByName()方法,返回一个NodeList对象(类数组对象)。

本例选取 name="btn1" 的button元素:

  • 用指定标签名选取元素
  1. getElementsByTagName()传递通配符参数“*”,将获得一个代表文档中所有元素的NodeList对象。

本例查找 id="main" 的元素,然后查找 id="main" 元素中的所有 <p> 元素:

  • 用指定类名选取元素
  1. 在HTML文档和HTML元素上,我们可以调用getElementsByClassName()来选择指定CSS类的元素,它返回一个实时的NodeList对象,包含文档或元素所有匹配的后代节点。
  2. getElementsByClassName()只需要一个字符串参数,但是该字符串可以由多个空格隔开的标识符组成,只有当元素的class属性值包含所有指定的标识符时才匹配。
  3. 在Element类中也同样定义了getElementsByClassName()方法,其原理和Document版本是一样的,不过它只选取调用该方法的元素的后代元素。

本例通过 getElementsByClassName 函数来查找 class="intro" 的元素:

  • 用css选择器选取元素
  1. querySelectorAll()方法需要一个选择器的字符串作为参数,可以根据一个 CSS 选择器来查询一个元素节点对象
  2. 它接受一个css选择器的字符串参数,返回一个代表文档中匹配选择器的所有元素的NodeList对象,并不是实时的。
  3. 使用该方法总会返回唯一的一个元素,如果满足条件的元素有多个,那么它只会返回第一个。如果没有匹配的元素,则返回一个空的NodeList对象。

2、设置HTML元素的内容:

通过五种不同的方式获取到了HTML元素,我们现在可以通过 JavaScript设置 HTML 元素的内容。

  • 文本输出流document.write

JavaScript 能够创建动态的 HTML 内容:

今天的日期是:
Thu Feb 25 2016 19:25:10 GMT+0800

在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。

注意:绝对不要在文档加载完成之后使用 document.write()。这会覆盖该文档。

  • 改变 HTML 内容

修改 HTML 内容是使用innerHTML方法innerText方法。

  1. innerHTML方法:

如需改变 HTML 元素的内容,请使用这个语法:

实例讲解:

上面的 HTML 文档含有 id="header" 的 <h1> 元素

我们使用 HTML DOM 来获得 id="header" 的元素

JavaScript 更改此元素的内容 (innerHTML)

innerText方法:

如需改变 HTML 元素的内容,请使用这个语法:

区别:

innerHtml 可以修改元素的内容,如果在修改的内容里面放html标签的话,innerHtml可以解析html标签。

innerText 可以修改元素的内容,如果在修改的内容里面放html标签的话,innerText不会解析html标签而是纯文本输出。

3、获取和设置 HTML元素的属性

获取HTML元素的属性
  1. 通过JavaScript我们不仅可以获取到HTML元素,还可以获取到该元素的属性,这里我们使用的是getAttribute()方法。
  2. 语法:getAttribute("属性名") 获取元素的属性值

 

设置HTML元素的属性
  1. 通过JavaScript我们不仅可以获取到HTML元素,还可以给该元素添加属性名和属性值,这里我们使用的是setAttribute ()方法。
  2. 语法:setAttribute("属性名","属性值") 添加元素的属性名和属性值

3、改变 元素的css样式

HTML DOM 允许 JavaScript 改变 HTML 元素的样式。

如需改变 HTML 元素的样式,请使用这个语法:  

4、DOM 元素的方法

1、JavaScript HTML DOM 元素(节点)

创建新的 HTML 元素

在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性,分别

  1. nodeName : 节点的名称
  2. nodeType :节点的类型
  3. nodeValue :节点的值

 

2、创建新的 HTML 元素createElement、appendChild

如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。

3、删除已有的 HTML 元素removeChild

以下代码将已有的元素删除:

二、BOM

1、HTML BOM (浏览器对象模型)

1、文档对象模型(Document Object Model,DOM)是表示和操作HTML和XML文档内容的基础 API

2、当网页被加载时,浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。

3、Document和Element是两个重要的DOM类

4、能利用BOM做什么!

BOM提供了一些访问窗口对象的一些方法,我们可以用它来移动窗口位置,改变窗口大小,打开新窗口和关闭窗口,弹出对话框,进行导航以及获取客户的一些信息如:浏览器品牌版本,屏幕分辨率。但 BOM最强大的功能是它提供了一个访问HTML页面的一入口--document对象,以使得我们可以通过这个入口来使用DOM的强大功能!!!

2、BOM提供的对象

BOM提供了一组对象,用来完成对浏览器的操作。

BOM提供的对象:

  1. window:代表了整个浏览器窗口,同时是全局对象。
  2. navigator 代表的是当前浏览器的信息,可以识别不同浏览器。
  3. location:代表浏览器的地址栏信息,可以操控浏览器跳转页面。
  4. History:历史记录。
  5. screen:代表的是用户的屏幕信息。
  1. Window对象的方法和属性

window对象是浏览器窗口对文档提供的一个现实的容器,代表打开的浏览器窗口,是每一个加载文档的父对象

window的属性和方法调用方法:window.属性,window.方法 也可以直接调用省略 window.

Window对象的方法:

 1.对话框

2.窗体控制

window对象的常用的属性:
1. innerWidth和innerHeight
  1. innerWidth 返回窗口的文档显示区域的宽度
  2. innerHeight 返回窗口的文档显示区域的高度。
2. outerheight和outerwidth
  1. outerheight 返回窗口的外部高度
  2. outerwidth 返回窗口的外部宽度。

Navigator 对象的方法和属性

Navigator 对象包含有关浏览器的信息。

<body>

<div id="example"></div>

<script>

    txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";

    txt+= "<p>浏览器名称: " + navigator.appName + "</p>";

    txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";

    txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";

    txt+= "<p>硬件平台: " + navigator.platform + "</p>"

    txt+= "<p>用户代理: " + navigator.userAgent + "</p>";

    txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";

    document.getElementById("example").innerHTML=txt;

</script>

</body>

Location 对象的方法和属性

Location 对象包含有关当前 URL 的信息。

Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问。

 

History对象的方法和属性

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

Screen对象的属性

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

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

相关文章

2024年低碳技术与污染控制技术国际学术会议(ICLCTPCT 2024)

2024年低碳技术与污染控制技术国际学术会议(ICLCTPCT 2024) 2024 International Conference on Low carbon technology and pollution control technology 一、【会议简介】 2024年低碳技术与污染控制技术国际学术会议&#xff0c;是交流科研成果的绝佳平台。 这次会议将汇集世…

Python 高质量类编写指南

原文&#xff1a;https://www.youtube.com/watch?vlX9UQp2NwTk 代码&#xff1a;https://github.com/ArjanCodes/examples/tree/main/2023/classguide Python 高质量类编写指南 我们将通过一些方法增加类的可读性和易用性。 通过&#xff08;按照属性或行为&#xff09;拆分类…

大模型检索召回系统:RAG技术的全面调查与未来展望

随着人工智能技术的飞速发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在自然语言处理&#xff08;NLP&#xff09;领域取得了显著成就。然而&#xff0c;这些模型在处理特定领域或知识密集型任务时仍面临挑战&#xff0c;如产生错误信息或“幻觉”。为了克服这些难…

docker-compose搭建redis环境:哨兵模式(一主两重两哨兵)

文章目录 0.BG1. 编写docker-compose.yml文件2. 哨兵配置文件sentinel.conf3.启动容器4.模拟故障转移 0.BG redis环境有多中模式&#xff0c;包括Standalone&#xff0c;Cluster和Sentinel模式等。这里介绍一种简单搭建Sentinel模式的方法&#xff0c;搭建一个一主两重两哨兵的…

做视频号小店一年半,内部玩法曝光,今日全盘托出

大家好&#xff0c;我是电商笨笨熊 腾讯推出电商的消息一出来&#xff0c;就成为了电商界的又一关注点&#xff1b; 不少人称腾讯做电商不会长久&#xff0c;也有人称视频号小店必将成为未来电商黑马&#xff1b; 无论是哪种说法&#xff0c;视频号小店我先替大家做了一年半…

进程状态和优先级(进程第2篇)【Linux复习篇】

目录 一、进程状态 1、进程有什么状态&#xff1f; 2、 Linux下的进程状态有什么&#xff1f; 二、进程优先级 1、进程优先级是什么&#xff1f; 2、为什么要有优先级 3、怎么改进程优先级&#xff1f;要改吗&#xff1f; 4、操作系统如何根据优先级开展调度的&#xff…

使用原型学习和特权信息进行可解释的医学图像分类

Interpretable Medical Image Classification Using Prototype Learning and Privileged Information 摘要 .可解释性通常是医学成像的基本要求。需要先进的深度学习方法来满足这种对可解释性和高性能的需求。 本文研究了训练过程中可用的其他信息是否可用于创建易于理解且强…

DS32K查看内置寄存器数值

需要在debug的时候进行查看&#xff0c;先暂停&#xff0c;再打开EmbSys Registers窗口。 需要先将导出的内容选中并双击&#xff0c;不然复制出来会变成问号。右上角有个复制按钮&#xff0c;复制到剪贴板就行。譬如我这里选择了MCR寄存器&#xff0c;复制出来的就是这个寄存器…

Redis入门到通关之Redis数据结构-List篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端…

七分钟“手撕”三大特性<多态>

目录 一、学习多态之前需要的知识储备 二、重写 1.什么是重写 2.重写可以干嘛 3.怎么书写重写 4.重载与重写的区别 三、向上转型 1.什么是向上转型&#xff1f; 2.向上转型的语法 3.向上转型的使用场景 四、多态是什么 六、多态实现 七、多态的好处 八、多态的缺…

程序员过了35岁没人要?“这行越老越香”

程序员35岁失业&#xff1f;参加完OceanBase开发者大会&#xff0c;我又悟了&#xff01; 周六参加了OceanBase2024 开发者大会的现场&#xff0c;来之前我其实挺忐忑的&#xff0c;我觉得一个数据库产品的发布会&#xff0c;能有什么新鲜的东西&#xff1f; 踏入酒店的那一刻&…

经风靡全球的 PHP 为何逐渐失去优势?

TIOBE 编程语言人气指数发布更新&#xff0c;并提出“PHP 的魔力是否正在消散&#xff1f;”的灵魂拷问。今年 4 月&#xff0c;PHP 在 TIOBE 编程语言指数榜上仅位列第 17&#xff0c;“成为其有史以来的最低排位”。 暴露 PHP 人气急剧下滑的还不只是 TIOBE 榜单。在年度 Sta…

MP4转gif如何操作?一个常见方法分享

MP4是一种视频格式&#xff0c;而gif则是图片格式。当我们需要将MP4格式的时候转成gif格式图片的时候要怎么操作呢&#xff1f;怎样在不下载软件的情况下在线转换格式呢&#xff1f;很简单&#xff0c;通过使用gif图片制作&#xff08;https://www.gif.cn/&#xff09;工具-GIF…

Android开发者必备:RootEncoder引领实时流媒体传输革新

Android开发者必备&#xff1a;RootEncoder引领实时流媒体传输革新 I. 引言 A. RootEncoder简介 RootEncoder for Android&#xff08;rtmp-rtsp-stream-client-java&#xff09;是一个功能强大的流编码器&#xff0c;旨在通过多种协议&#xff08;包括RTMP、RTSP、SRT和UDP…

VR全景创业项目应该如何开展?未来有市场吗?

伴随着5G网络的发展&#xff0c;VR全景得到了众多的关注和提升。与此同时&#xff0c;各行各业都开始关注自身产业在互联网的展示效果&#xff0c;因为年轻一代的生活已经离不开互联网&#xff0c;而VR全景在互联网上的3D展示效果能给商家带来流量&#xff0c;提升营业额。 随着…

ERROR: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

今天本来想在A服务器上传文件给B服务器的结果发现明明给root用户设置了密码就是远程登陆不了&#xff0c;后来才发现在容器中很多服务都是没有的&#xff0c;所以刚安装后忘记了修改配置文件&#xff0c;导致远程登陆失败。 报错&#xff1a; 解决方法&#xff1a; 在/etc/ssh…

【电控实物-infantry】

云台电机参数 电机内部参数 相电阻:Rs1.8欧 相电感:Ls5.7810^-3H 转矩常数:Kt 0.741 NM/A 转动惯量:J KG-m^2 电机接收数据&#xff1a;-16384到16384&#xff08;-3A到3A&#xff09; 电机反馈&#xff1a;速度RPM rad/s &#xff08;2πrpm&#xff09;/60 C板陀螺仪&…

苍穹外卖学习笔记(9.订单状态定时处理,来电提醒,客户催单)

目录 一、订单状态定时处理1、需求分析设计2、代码开发3、测试 二、来单提醒1、需求分析设计2、代码开发3、测试 三、客户催单1、需求分析设计2、代码开发3、测试 四、相关知识1、Spring Task2、WebSocket 一、订单状态定时处理 1、需求分析设计 2、代码开发 创建orderTask类…

初学若依笔记

初学若依 下载ruoyi(以前后端分离板为例) https://ruoyi.vip/ 部署 安装mysql安装redis将数据库和redis配置到若依 配置文件为 ruoyi-admin\src\main\resource\application-druid.yml 运行 略 开发自己的功能 创建模块 为了不影响原有功能&#xff0c;创建一个模块写自…

物联网(iot)深度解析——FMEA软件

物联网即IoT&#xff0c;是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术&#xff0c;实时采集任何需要监控、连接、互动的物体或过程&#xff0c;采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息&#xff0c;通过…