09—DOM和BOM

news2024/12/23 8:14:58

一、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对象的属性

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

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

相关文章

3d模型合并怎么样不丢材质?---模大狮模型网

在3D设计中&#xff0c;合并模型是常见的操作&#xff0c;它可以帮助设计师将多个单独的模型组合成一个&#xff0c;从而简化场景并提高渲染效率。然而&#xff0c;合并模型时常常会面临一个棘手的问题&#xff1a;如何确保合并后的模型不丢失原有的材质?本文将探讨如何在合并…

Parallels Desktop 19完美中文版 PD19虚拟机详细图文安装教程 亲测兼容M1/M2

对于许多Mac用户来说&#xff0c;运行Windows应用程序是必不可少的。也许你的雇主使用的软件只适用于Windows&#xff0c;或者需要使用依赖于某些Windows技术的网站。或者你想在Mac上玩Windows游戏。或者&#xff0c;你可能需要在其他操作系统上测试应用程序和服务——你可以在…

【数据结构-图】

目录 1 图2 图的定义和基本概念&#xff08;在简单图范围内&#xff09;3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中&#xff0c;需要对部署的服务进行监控和告警&#xff0c;需要创建并启用预警规则&#xff0c;而这里怎么去监控每个pod级别的CPU和内存&#xff0c;需要自己写搜索查询 解决方法 搜索和查询的语句如下&#xff0c;需要自己替换其中的部分信息,其中…

Qwen1.5微调

引子 由于工作上需要&#xff0c;一直在用Qwen做大模型推理&#xff0c;有个再训练的需求&#xff0c;特此琢磨下Qwen的训练。OK&#xff0c;我们开始吧。 一、安装环境 查看显卡驱动版本 根据官网推荐 OK&#xff0c;docker在手&#xff0c;天下我有。 docker pull qwenll…

vuetify3.0+tailwindcss+vite最新框架

1、根据vuetify官网下载项目 安装vuetify项目 2、根据tailwindcss官网添加依赖 添加tailwindcss依赖 3、 配置main.ts // main.ts import "./style.css"4、使用 <template><h1 class"text-3xl font-bold underline">Hello world!</…

sscanf和scanf区别

sscandf 从字符串中提取数据 scanf 标准输入流读取数据 int num; sscanf("42", "%d", &num);float f; sscanf("3.14", "%f", &f);char str[20]; sscanf("Hello, World!", "%s", str);int a, b; sscanf(…

信息系统项目管理师论文考察范围预测

在2023年下半年实施机考之前&#xff0c;论文的范围还是比较好预测的&#xff0c;因为从历年考题来看&#xff0c;可以说十大管理领域考察的概率接近100%&#xff0c;而且有一定规律&#xff0c;比如说某个管理领域很久没考了&#xff0c;那么考察的概率就相对大一点&#xff0…

路由过滤与引入实验

一.实验要求及拓扑 二.实验思路 1.配置IP地址及环回 2.配置OSPF协议及RIP协议 3.OSPF和RIP进行路由引入 4.在R2上配置路由过滤&#xff0c;使RIP部分无法学到R4业务网段的信息 5.在R4上进行路由过滤&#xff08;地址前缀列表&#xff09;&#xff0c;使 R4 无法学习到 R1…

centos7服务器系统如何安装宋体字文件

centos7服务器系统如何安装宋体字文件&#xff01; 最近开发的积德寺app,菩提佛堂祈福平台网站发布后&#xff0c;由于服务器之前遇到了攻击&#xff0c;数据丢失了&#xff0c;重新安装了一遍系统centos7.发现客户的功德证书创建后&#xff0c;字体乱码了。很明显是缺少了宋体…

Linux 内核调试环境搭建

目录 QEMU Linux 0.11 源码 ​编辑 gdb 调试 学习Linux内核&#xff0c;我们可以看书&#xff0c;实际我们最好可以有一个可以调试的环境&#xff0c;本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel 。在ubantu 20.04 的PC 上面编译内核源码&#xff0c;通过QE…

基于springboot+vue+Mysql的CSGO赛事管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【点量云流】国内首家适配国产信创的实时云渲染解决方案,助力国产化信创新体验!

一、背景 随着信息技术的广泛应用&#xff0c;信息安全与自主可控成为国家发展的重要保障。近年来&#xff0c;国产化信创的发展&#xff0c;为推动信息技术产业自主创新&#xff0c;实现关键技术和产品的自主可控&#xff0c;对于保障国家信息安全、促进产业发展有着重要意义。…

Spectre-v2 以及 Linux Retpoline技术简介

文章目录 前言一、Executive Summary1.1 Spectre-v2: Branch Predictor Poisoning1.2 Mitigating Spectre-v2 with Retpolines1.3 Retpoline Concept 二、BackgroundExploit Composition 三、(Un-)Directing Speculative Execution四、Construction (x86)4.1 Speculation Barri…

递归神经网络(RNN)在AI去衣技术中的深度应用

在人工智能&#xff08;AI&#xff09;技术飞速发展的今天&#xff0c;图像处理和计算机视觉领域不断取得新的突破。其中&#xff0c;AI去衣技术作为一个具有挑战性的研究方向&#xff0c;引起了广大研究者和公众的关注。递归神经网络&#xff08;RNN&#xff09;作为深度学习的…

大模型-入门小知识

大模型是什么 大量参数&#xff08;上亿&#xff09;深度学习模型 人工只能包含机器学习&#xff0c;深度学习,深度学习包括大模型 单个神经元的计算模型&#xff1a; 大模型是怎么训练的 之前是算法&#xff08;神经网络&#xff09;----> 训练&#xff08;门槛降低&…

Win linux 下配置adb fastboot

一、Win配置adb & fastboot 环境变量 主机&#xff1a;Win10&#xff0c;除了adb fastboot需要设置变量之外&#xff0c;驱动直接安装即可 win下adb fastboot 下载地址&#xff1a;https://download.csdn.net/download/u012627628/89215420 win下qcom设备驱动下载地址&a…

C# winfrom窗体最小化任务栏托盘

一、添加notifyIcon控件 二、点击缩小按钮 三、添加notifyIcon双击还原事件 四、添加contextMenuStrip多任务菜单 五、将 contextMenuStrip绑定到notifyIcon控件 六、双击还原还原窗体 七、双击退出退出应用程序 一、添加notifyIcon控件 设置notifyIcon样式 Icon图标以…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

2023中国便利店TOP100公示

转载来源&#xff1a;中国连锁经营协会