✿✿✿JavaScript --- BOM、DOM对象

news2025/1/16 3:38:58

目 

一、BOM浏览器对象模型

1.Window窗口对象

(1)与弹出有关的方法

(2)与定时器有关的方法

(3)与打开关闭有关的方法

(4) 获取其他对象的属性

2.Location地址栏对象 

3.History历史记录对象

二、DOM文档对象模型

1.Document文档对象

(1)获取Element对象

(2)创建其他对象

 2.标签对象的属性

创建删除DOM元素案例:


一、BOM浏览器对象模型

BOM(Browser Object Model) 浏览器对象模型。也就是将浏览器的各个组成部分封装为对象。主要特点就是BOM对象不能由我们程序员自己创建,当文档加载进内存,浏览器自动创建。BOM中常见的对象如下:

1.Window窗口对象

使用方式: window.方法名();   或   方法名();( window 可以省略)。 该对象常用到的方法如下:

(1)与弹出有关的方法

  • alert()                                                 显示带有一段消息和一个确认按钮的警告框。
  • confirm()                                            显示带有一段消息以及确认按钮和取消按钮的对话框。 
  • prompt()                                             显示可提示用户输入的对话框。 

(2)与定时器有关的方法

  • setInterval()                                        按照指定的周期(以毫秒计)来调用函数或计算表达式。 循环执行
  • clearInterval()                                     取消由 setInterval() 设置的 timeout。  
  • setTimeout()                                       在指定的毫秒数后调用函数或计算表达式。 只执行一次
  • clearTimeout()                                    取消由 setTimeout() 方法设置的 timeout。 

(3)与打开关闭有关的方法

  • open()                                                 打开新窗口。参数:打开目标的URL。返回值:返回新打开窗口的window引用
  • close()                                                 关闭窗口。注:谁调用我 , 我关谁

(4) 获取其他对象的属性

  • history                                                 对 History 对象的只读引用。请参数 History 对象。 
  • location                                               用于窗口或框架的 Location 对象。请参阅 Location 对象。 
  • Navigator                                            对 Navigator 对象的只读引用。请参数 Navigator 对象。 
  • Screen                                                对 Screen 对象的只读引用。请参数 Screen 对象。 
  • document                                            对 Document 对象的只读引用。请参阅 Document 对象。 

2.Location地址栏对象 

获取方式:可以用window对象中的属性获取。常用的属性 ---->  href:设置或获取当前的URL。

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function intoPage() {
				//window.open()
				if (confirm("你即将跳转到外部网站,确认吗?")) {
					//window.open()
					location.href = "http://www.163.com"
				}
			}
		</script>
	</head>
	<body>
		<a href="http://www.163.com">进入网易</a>
		<button onclick="intoPage()">进入页面</button>
		<a href="index.html?username=zhangsan&password=123456">进入首页</a>
		<button onclick="location.reload()">刷新页面</button>

	</body>
</html>

3.History历史记录对象

获取方式:可以用window对象中的属性获取。 常用的方法:go();注:1表示前进,-1表示后退。

补:Navigator浏览器对象。以及Screen显示器屏幕。基本不用仅作了解!!Screen的属性如下:

  • availHeight                                            获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。     
  • availWidth                                             获取系统屏幕的工作区域宽度,排除 Windows 任务栏。     
  • height                                                    获取屏幕的垂直分辨率。 
  • width                                                      获取屏幕的水平分辨率。 
<html>
	<head>
		<meta charset="utf-8">
		<title></title>

	</head>
	<body>
		<a href="A.html">进入A页面</a>
		<a href="javascript:void(history.go(1))">前进</a>
	</body>
</html>

二、DOM文档对象模型

DOM(Document Object Model) 文档对象模型,将标记语言文档的各个组成部分封装为对象。

1.Document文档对象

用window对象中的属性获取,window.document。常用的属性:

  • body                                                        可以获取body标签对象
  • title                                                          属性获取文档标题
  • lastModified                                             获取文档最后一次修改时间
  • URL                                                         获取地址栏中的地址

常用的方法如下:

(1)获取Element对象

  • getElementById()                                    通过id属性值获取唯一的元素
  • getElementsByTagName()                      通过标签名称获取元素对象数组
  • getElementsByName()                            通过name属性值获取元素对象数组
  • getElementsByClassName()                   通过class属性值获取元素对象数组                
  • querySelector()                                        根据css的选择器语法来选择的,获取的是第一个是个单数
  • querySelectorAll(".myclass")                    根据css的选择器语法来选择的,获取的是多个

(2)创建其他对象

  • createElement                                           创建元素对象
  • createAttribute                                           创建属性对象
  • createComment                                         创建注释对象
  • createTextNode                                         创建文本对象
  • setAttribute()                                              给属性对象设置值
  • remove()                                                    删除自己
  • removeChild()                                            移除子元素
  • removeAttribute("align")                             根据属性名来移除标签上的属性
  • removeAttributeNode(attr)                          移除属性对象。传入的是一个属性对象
  • replaceChild(h4,h)                                      站在父元素的角度,替换子元素,值1:新的元素,值2:是要替换的旧元素。
  • insertBefore(h5,h1)                                     站在父标签的角度,在这个h1标签对象的前面插入h5这个标签对象。
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body id="bd">
		<h1 id="myh">aaa</h1>
		<h2 class="myclass">000000001</h2>
		<h2 class="myclass">000000002</h2>
		<h2 class="myclass">000000003</h2>
		<h2 class="myclass">000000004</h2>
		<h2 class="myclass">000000005</h2>
		<h2 class="myclass">000000006</h2>
		<h2 class="myclass">000000007</h2>
		<h2 class="myclass">000000008</h2>
		<h2 class="myclass">000000009</h2>
		<h2 class="myclass">000000010</h2>

		<h3>0000001</h3>
		<h3>0000002</h3>
		<h3>0000003</h3>
		<h3>0000004</h3>
		<h3>0000005</h3>
		<h3>0000006</h3>
		<h3>0000007</h3>
		<h3>0000008</h3>
		<h3>0000009</h3>
		<h3>0000010</h3>
	</body>

	<script>
		/*  获取Element对象 */
		var myh = document.getElementById("myh");
		var bd = document.getElementById("bd");
		//根据类名获取多个标签对象数组,这个数组是伪数组,
		var eleArr = document.getElementsByClassName("myclass");
		for (let i = 0; i < eleArr.length; i++) {
			if (i % 2 == 0) {
				eleArr[i].style.background = "yellow";
			} else {
				eleArr[i].style.background = "red";
			}
		}

		var eleArr2 = document.getElementsByTagName("h3");
		for (let i = 0; i < eleArr2.length; i++) {
			if (i % 2 == 0) {
				eleArr2[i].style.background = "pink";
			} else {
				eleArr2[i].style.background = "blue";
			}
		}
	</script>
</html>

 2.标签对象的属性

  • nnerHTML属性                                            获取或设置 元素的 子内容
  • innerTEXT属性                                            获取标签之间的文本内容
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" name="username" />

		<input type="checkbox" name="hobby" />学习
		<input type="checkbox" name="hobby" />游戏
		<input type="checkbox" name="hobby" />娱乐
		<input type="checkbox" name="hobby" />音乐

		<h1 class="hehe">0000001</h1>
		<h1 class="hehe">0000002</h1>
		<h1 class="hehe">0000003</h1>
		<h1 class="hehe">0000004</h1>
		<h1 class="hehe">0000005</h1>
		<h1 class="hehe">0000006</h1>
		<h1 class="hehe">0000007</h1>
		<h1 class="hehe">0000008</h1>
		<h1 class="hehe">0000009</h1>
		<h1 class="hehe">0000010</h1>

		<div>
			<div>
				<h3><a href="#">hehhe</a></h3>
			</div>
		</div>
	</body>

	<script>
		//注意返回的是数组
		//针对表单项标签,有个特定方法 getElementsByName()
		var eleArr = document.getElementsByName("username");
		var ele = eleArr[0];
		alert(ele);

		var v = document.querySelector(".hehe");
		v.style.color = "red";

		var arr = document.querySelectorAll(".hehe");
		alert(arr.length);

		var aEle = document.querySelector("div>div>h3>a");
		aEle.style.fontSize = "50px";
	</script>
</html>

创建删除DOM元素案例:

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		//创建标签对象
		var myDiv = document.createElement("div");
		var bd = document.body;
		//给父元素添加子元素
		bd.appendChild(myDiv);
		//创建文本对象 
		var text = document.createTextNode("这是一段文本");
		myDiv.appendChild(text);
		//创建属性对象
		var attr = document.createAttribute("style");
		attr.value = "color:red;font-size:30px";
		//给标签设置属性
		myDiv.setAttributeNode(attr);
		//创建注释对象
		var zhshi = document.createComment("这是一段注释");
		bd.append(zhshi);

		var myH1 = document.createElement("h1");
		bd.appendChild(myH1);
		var text2 = document.createTextNode("这是一段文本222222");
		myH1.appendChild(text2);
		//给标签设置属性
		myH1.setAttribute("id", "myh1");
		myH1.setAttribute("style", "color:blue;background:yellow");

		//删除元素
		//myH1.remove(); 站在自身的角度来删除自己
		//bd.removeChild(myDiv);

		//删除属性
		//myH1.removeAttributeNode(属性对象) //
		myH1.removeAttribute("id");
		//站在父元素的角度,替换子元素,值1:新的元素,值2:是要替换的旧元素。
		var myH2 = document.createElement("h2");
		bd.replaceChild(myH2, myH1);
		//站在父标签的角度,在这个h1标签对象的前面插入h5这个标签对象。
		var myH3 = document.createElement("h3");
		bd.insertBefore(myH3, myDiv);
	</script>
</html>

(小编也在努力学习更多哟!以后再慢慢分享的啦!)

希望对友友们有所帮助!!!

 

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

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

相关文章

如何理解CRC循环冗余校验——图解CRC算法模型和C语言实现

如何理解CRC循环冗余校验 循环冗余校验&#xff08;英语&#xff1a;Cyclic redundancy check&#xff0c;通称“CRC”&#xff09;是一种产生定长校验码的算法&#xff0c;主要用来检测或校验数据传输或者保存后可能出现的错误。 它真的太常见了&#xff0c;上至应用软件通信…

Qt QCustomPlot 点状网格线实现和曲线坐标点拾取

Qt QCustomPlot 点状网格线实现和曲线坐标点拾取 文章目录Qt QCustomPlot 点状网格线实现和曲线坐标点拾取摘要我想实现的效果点阵的实现第一版本&#xff0c;使用QPen Style第二版本&#xff0c;通过设置背景第三版本&#xff0c;回到QPen Style取曲线上的点关键字&#xff1a…

[附源码]Python计算机毕业设计Django电影推荐网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【附源码】计算机毕业设计JAVA助农脱贫系统

【附源码】计算机毕业设计JAVA助农脱贫系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

cpu设计和实现(异常和中断)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 异常和中断几乎是cpu最重要的特性。而异常和中断&#xff0c;本质上其实是一回事。很多熟悉mips的朋友&#xff0c;应该都听过这么一个词&#xff…

算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)

算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295&#xff09; 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f;目录1. MT2291 饿饿!饭饭!2. MT2292 甜甜花的研究3. MT2293 赌…

【2013NOIP普及组】T4. 车站分级 试题解析

【2013NOIP普及组】T4. 车站分级 试题解析 时间限制: 1000 ms 内存限制: 131072 KB 【题目描述】 一条单向的铁路线上,依次有编号为 1,2,…,n 的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟…

护眼灯真的有用吗?2022双十二选哪个牌子的护眼台灯好

护眼灯对保护眼睛是真的有用&#xff0c;它不是那种如医学奇迹般的治疗眼睛疾病&#xff0c;或者降低近视度数等等&#xff0c;这样的伪科学只会让人觉得是智商税。护眼灯的作用原理很简单也很有效&#xff0c;即通过各种方法提高光线的舒适度&#xff0c;使人眼在晚上长时间工…

厦门市会展局携手美创:以数据为核心的安全建设守护“云上会展”

新冠疫情影响下&#xff0c;会展业与云计算、大数据、物联网等数字技术加速融合&#xff0c;“云上会展”成为新趋势。然而风口之下&#xff0c;高价值的展会敏感数据无时不面临着被窃取、攻击的风险。因此&#xff0c;成熟配套的数据安全能力体系建设&#xff0c;也是会展业创…

Monaco Editor教程(二十):在编辑器的某个特定位置插入自定义的dom内容,图片,表单,表格,视频

前言 哇咔咔&#xff0c;这是我的第20篇Monaco教程&#xff0c;写完这一篇会暂时休息一段时间&#xff0c;练练字&#xff0c;存存稿&#xff0c;读读书&#xff0c;顺便修修文章。 目前全网成系统的monaco中文专栏应该只有我这一个&#xff0c;欢迎评论区打脸。自结束了GitLa…

面试题------线程池的拒绝策略

面试题------线程池的拒绝策略 线程池有7个核心参数 1.核心线程数 2.最大线程数 3.非核心线程存活时间 4.存活时间的单位 5.工作队列 6.线程自定义的一些配置 7.拒绝策略&#xff08;当达到最大线程数、且工作队列也满了会执行拒绝策略&#xff09; public ThreadPoolExecutor…

马上2023年了,学一下gradle(Gradle)安装及配置

Gradle学习 例如&#xff1a;相信已经很多公司在用了&#xff0c;但是小伙伴对此还是很模糊 文章目录Gradle学习Gradle一、Gradle介绍&#xff1f;二、常见的项目构建工具gradle安装1.下载2. 配置&#xff08;环境变量&#xff09;2.1打开环境变量2.2**新建环境变量**2.3在Pat…

【C++】STL—vector的常用接口

文章目录前言一、vector介绍二、vector的使用1. vector的定义2. vector的遍历2.1.operator[ ]2.2.迭代器2.3.范围for3. vector的空间增长问题3.1.size和capacity3.2.max_size和empty3.3.reserve3.4.resize3.5.Shrink to fit4. vector的增删查改4.1.push_back和pop_backinsert和…

Vue 3的高颜值UI组件库

Vue 3.0 已经发布两年多的时间&#xff0c;今年 2 月 Vue 3.0 也正式成为新的默认版本。今天就来分享 7 个适用于 Vue 3 的高颜值 UI 组件库&#xff01; Element Plus Element Plus 是一套由饿了么开源出品的为开发者、设计师和产品经理准备的基于 Vue 3.0 的组件库。Elemen…

【能源管理】制造行业中汽车厂房综合能效管理平台应用分析

安科瑞 李亚俊 平台概述 壹捌柒贰壹零玖捌柒伍柒AcrelEMS-EV汽车厂房能效管理平台集变电站综合自动化、电力监控、电气安全、电能质量分析及治理、能耗管理、能效分析、照明控制、充电桩运营管理、设备运维于一体&#xff0c;为建立可靠、安全的工厂能源管理体系提供数据支持…

【Flink】处理迟到元素(续)、自定义水位线和多流的合并与合流

文章目录一 处理迟到元素1 处理策略&#xff08;3&#xff09;使用迟到元素更新窗口计算结果a 代码编写b 测试二 自定义水位线1 产生水位线的接口2 自定义水位线的产生逻辑三 多流的合流与分流1 union算子2 水位线传递规则&#xff08;1&#xff09; 分流a 代码编写b 测试&…

virtio-net 实现机制【二】(图文并茂)

4. virio-net前端驱动分析 4.1 重要数据结构 4.1.1 send_queue结构 send_queue结构是对virtqueue的封装&#xff0c;是virtio-net的发送队列&#xff0c;即数据流向从前端驱动&#xff08;Guest&#xff09;到后端驱动&#xff08;Host&#xff09; 4.1.2 receive_queue结构…

【PlasticSCM Could Edition】新版本云托管浅试2

【PlasticSCM Could Edition】新版本云托管浅试2首先修复更改托管提一嘴首先 建议还是使用 PlasticHub&#xff0c;不要去用 PlasticSCM Cloud 原因&#xff1a; 由于比较新&#xff0c;伴随着的就是 —— 太多 bigs 了&#xff01;而且不知道怎么去改。 当时我创建了一个…

数据结构复习

期末的一套模拟题&#xff0c;仅供参考&#xff0c;切莫作为期末考试依据&#xff01;&#xff01;&#xff01; 选择题 数组A[1..5,1..6]每个元素占5个单元&#xff0c;将其按行优先次序存储在起始地址为1000的连续的内存单元中&#xff0c;则元素A[5,5]的地址为&#xff1a;…

轻量应用服务器部署vue项目

首先我已经拥有一个轻量云服务器了.windows2012的版本&#xff1a; 1.搭建 FTP 服务 为了将我们打包好的vue项目传到服务器&#xff0c;我们要先在服务器搭建FTP服务。 具体步骤可以参考官方文档&#xff0c;官方文档的教程十分清楚详细&#xff0c;按照步骤来就不会出错&am…