JavaScript学习笔记(3)

一.BOM对象

BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就
是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作
BOM对象的相关属性或者函数来完成。例如:我们想要将浏览器的地址改为 http://www.baidu.com ,我们就可以通过BOM中提供的location对象的href属性来完成,代码如下:
location.href='http://www.baidu.com'
BOM中提供了如下5个对象:

对象名称描述示例
Window浏览器窗口对象,它是JavaScript中的全局对象,包含了许多属性和方法用于操作浏览器窗口等。window.alert('这是一个警告框');
Navigator浏览器对象,包含有关浏览器的信息。console.log(navigator.userAgent);
Screen屏幕对象,包含屏幕相关的属性,如屏幕宽度、高度等。console.log(screen.width);
History历史记录对象,用于操作浏览器的历史记录。history.back(); // 返回上一页
Location地址栏对象,包含有关当前页面的URL信息,并可用于操作页面跳转等。console.log(location.href); location.href = 'https://www.example.com';

1. Window对象

window对象指的是浏览器窗口对象,是JavaScript的全部对象,所以对于window对象,我们可以直接使用,并且对于window对象的方法和属性,我们可以省略window.例如:我们之前学习的alert()函数其实是属于window对象的,其完整的代码如下:

window.alert('hello world');

其可以省略window. 所以可以简写成

alert('hello world');

所以对于window对象的属性和方法,我们都是采用简写的方式。window提供了很多属性和方法,下表列出了常用属性和方法

window对象提供了获取其他BOM对象的属性:

属性描述
history用于获取history对象,可通过它来操作浏览器的历史记录相关功能,如前进、后退等。
location用于获取location对象,能够获取当前页面的URL信息,也能进行页面跳转等操作。
Navigator用于获取Navigator对象,从而获取浏览器相关的信息,如浏览器类型、版本等。
Screen用于获取Screen对象,以获取屏幕相关的属性,像屏幕的宽度、高度等。

也就是说我们要使用location对象,只需要通过代码 window.location 或者简写 location 即可使
用window也提供了一些常用的函数,如下表格所示:

函数描述
alert()显示带有一段消息和一个确认按钮的警告框,用户只能点击确认来关闭警告框,常用于向用户显示重要的提示信息。
confirm()显示带有一段消息以及确认按钮和取消按钮的对话框,根据用户点击的按钮会返回不同的值(点击确认返回true,点击取消返回false),可用于获取用户对某个操作的确认与否。
setInterval()按照指定的周期(以毫秒计)来调用函数或计算表达式,只要页面不关闭或者没有调用clearInterval停止,就会持续周期性地执行。
setTimeout()在指定的毫秒数后调用函数或计算表达式,只会执行一次,常用于在一段时间后执行某个特定的操作。

1.1 alert()函数

弹出警告框,函数的内容就是警告框的内容

alert("hello world");

1.2 confirm()函数

弹出确认框,并且提供用户2个按钮,分别是确认和取消。

但是我们怎么知道用户点击了确认还是取消呢?所以这个函数有一个返回值,当用户点击确认时,
返回true,点击取消时,返回false。我们根据返回值来决定是否执行后续操作。修改代码如下:再次运行,可以查看返回值true或者false

var flag=confirm("你确定?");
alert(flag);

1.3 setInterval(fn,毫秒值)

定时器,用于周期性的执行某个功能,并且是循环执行。该函数需
要传递2个参数:
fn:函数,需要周期性执行的功能代码
毫秒值:间隔时间
注释掉之前的代码,添加代码如下:

var i = 0;setInterval(function(){i++;console.log("定时器执行了"+i+"次");},2000);

1.4 setTimeout(fn,毫秒值)

定时器,只会在一段时间后执行一次功能。参数和上述
setInterval一致

setTimeout(function(){
alert("JS");
},3000);

2.Location对象

location是指代浏览器的地址栏对象,对于这个对象,我们常用的是href属性,用于获取或者设置浏览器的地址信息,添加如下代码:

        //获取浏览器地址栏信息alert(location.href);//设置浏览器地址栏信息location.href = "https://www.baidu.com";

二、DOM对象

1. DOM介绍

DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成
部分封装为对象。

DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为
Document:整个文档对象
Element:元素对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
如下图,左边是 HTML 文档内容,右边是 DOM 树

那么我们学习DOM技术有什么用呢?主要作用如下:
改变 HTML 元素的内容
改变 HTML 元素的样式(CSS)
对 HTML DOM 事件作出反应
添加和删除 HTML 元素
总而达到动态改变页面效果目的,具体我们可以查看代码中提供的06. JS-对象-DOM-演示.html来体会DOM的效果。

2. 获取DOM对象

我们知道DOM的作用是通过修改HTML元素的内容和样式等来实现页面的各种动态效果,但是我们要操作DOM对象的前提是先获取元素对象,然后才能操作。所以学习DOM,主要的核心就是学习如下2点:
如何获取DOM中的元素对象(Element对象 ,也就是标签)
如何操作Element对象的属性,也就是标签的属性。
接下来我们先来学习如何获取DOM中的元素对象。
HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的。
document对象提供的用于获取Element元素对象的api如下表所示:

函数描述
document.getElementById()以元素的id属性值为依据进行获取操作,最终会返回与该id对应的单个Element对象,若未找到匹配元素则返回null。
document.getElementsByTagName()根据标签名称来获取元素,会返回一个由所有匹配该标签名称的Element对象组成的数组,即便仅找到一个匹配元素,也会以包含该元素的数组形式返回(数组长度为1)。
document.getElementsByName()按照元素的name属性值进行获取,返回的是一个由所有匹配该name属性值的Element对象所组成的数组。
document.getElementsByClassName()基于元素的class属性值进行获取,将返回由所有匹配该class属性值的Element对象构成的数组

document.getElementById(): 根据标签的id属性获取标签对象,id是唯一的,所以获取到
是单个标签对象。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><img id="h1" src="image1/McCartney/1.png"> <br><br><div class="cls">helloWorld</div> <br><div class="cls">javascript</div> <br><input type="checkbox" name="hobby"> 电影<input type="checkbox" name="hobby"> 旅游<input type="checkbox" name="hobby"> 游戏<script>// Array对象的定义和使用 // var arr1 = new Array(1,2,3,4,5);// var arr2 = [5,6,7,8,9];// document.write(arr1[0]+"<br>");// document.write(arr2[0]+"<br>");/* var arr = [1,2,3,4,5,6,7,8,9,10];arr[20] = 100;arr[18] = 'A';arr[19] =true; */// document.write(arr[20]+"<br>");// document.write(arr.length+"<br>");// document.write(arr[18]+"<br>");// document.write(arr[19]+"<br>");// arr.forEach(function(e){//     document.write(e+"<br>");// })// document.write("<hr>");// arr.forEach((e)=>{document.write(e+"<br>")})// arr.push(11);// document.write(arr);// document.write(arr);// arr.splice(2,17);// document.write(arr);// var strr1 = new String("hello world"); // var strr2 = 'Hello String';// document.write(strr1+"<br>");// document.write(strr2+"<br>");// document.write(strr1.charAt(0)+"<br>");// document.write(strr1.indexOf('o')+"<br>");// document.write(strr1.trim()+"<br>");//去除空格// document.write(strr1.substring(2,5)+"<br>");//截取字符串/* var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';var jsonobj = JSON.parse(jsonstr);document.write(jsonobj.name+"<br>");document.write(JSON.stringify(jsonobj)+"<br>"); *//* alert("hello world");var flag=confirm("你确定?");alert(flag);var i = 0;setInterval(function(){i++;console.log("定时器执行了"+i+"次");},2000);prompt("请输入你的名字","Tom"); *//* setTimeout(function(){alert("JS");},3000); *//* //获取浏览器地址栏信息alert(location.href);//设置浏览器地址栏信息location.href = "https://www.baidu.com"; */var img = document.getElementById('h1');document.write(img);
</script></body>
</html>

document.getElementsByTagName() : 根据标签的名字获取标签对象,同名的标签有很
多,所以返回值是数组。

        var divs = document.getElementsByTagName('div');for (let i = 0; i < divs.length; i++) {document.write(divs[i]+"<hr>");}

document.getElementsByName() :根据标签的name的属性值获取标签对象,name属性值可
以重复,所以返回值是一个数组。

var ins = document.getElementsByName('hobby');
for (let i = 0; i < ins.length; i++) {
document.write('<hr>'+ins[i]);

document.getElementsByClassName() : 根据标签的class属性值获取标签对象,class
属性值也可以重复,返回值是数组。

            var divs = document.getElementsByClassName('cls');for (let i = 0; i < divs.length; i++) {document.write('<hr>'+divs[i]);}

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

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

相关文章

Hive之加载csv格式数据到hive

场景&#xff1a; 今天接了一个需求&#xff0c;将测试环境的hive数据导入到正式环境中。但是不需要整个流程的迁移&#xff0c;只需要迁移ads表 解决方案&#xff1a; 拿到这个需求首先想到两个方案&#xff1a; 1、将数据通过insert into语句导出&#xff0c;然后运行脚本 …

stm32f103 单片机(一)第一个工程

先看一个简单的 系统上已经安装好了keil5 与ARM包&#xff0c;也下载好了STM32固件库 新建一个工程&#xff0c;添加三个组 加入如下文件 在options 里作如下配置 准备在main.c 中写下第一个实验&#xff0c;点亮一个小灯。 像51单片机一样直接对引脚赋值是行不通的 在…

ChromeOS 132 版本更新

ChromeOS 132 版本更新 1. 企业定制化 Chrome Web Store 管理员现在可以使用新设置定制 Chrome Web Store 以适应他们管理的用户&#xff0c;包括以下功能&#xff1a; 添加公司标志添加首页横幅和自定义公告策划扩展集合实施基于类别的控制 这些设置可以通过管理员控制台进…

绘制决策树的尝试1

代码复制 import pydotplus 复制 - 这一行代码用于导入pydotplus模块&#xff0c;这是一个用来在Python中创建图形的工具。2. python from IPython.display import Image 这一行代码用于从IPython显示模块中导入Image类&#xff0c;它允许我们在Jupyter笔记本中显示图像。…

知识图谱结合大模型用于聊天分析

知识图谱结合大模型在聊天分析中的应用主要体现在以下几个方面&#xff1a; 1. 提升对话理解和生成能力 知识图谱&#xff08;KG&#xff09;与大模型&#xff08;LLM&#xff09;的结合能够显著增强对话系统的语义理解能力和生成能力。例如&#xff0c;通过知识图谱的结构化…

堆的补充--Top-K问题

我们今天来学习二叉树的链式存储&#xff0c;但是在我们学习之前我们先来看一下我们昨天学习的顺序存储&#xff1a;二叉树&#xff1b; 我们之前说堆有两种方法&#xff1a; 1.向下调整建堆&#xff1a; 我们找到最后一个非叶子结点&#xff0c;把他作为起始下标&#xff1…

放大器版图绘制全流程

版图的构成主要分为四部分。对于一般的电路来说&#xff0c;重点关注前三部分第一部分是电路中所对应的mos管电容电阻这些基本器件&#xff0c;一般都是由工艺产商提供标准的元件版图&#xff0c;这部分是我们不需要太关心的。第二部分是对器件进行连线第三部分是衬底的连接&am…

我谈概率论与数理统计的知识体系

学习概率统计二十多年后&#xff0c;在廖老师的指导下&#xff0c;厘清了各章之间的关系。本来就是一条线两个分支&#xff0c;脉络很清晰。 分支一&#xff1a;从随机现象到样本空间到随机事件再到概率。 从随机事件到随机变量&#xff1a;为了进行定量的数学处理&#xff0…

群晖Cloud Sync如何实现一键同步备份让数据更安全高效

文章目录 前言1. 群晖NAS安装Cloud Sync1.1 安装和配置 Cloud Sync 2. 功能演示3. 群晖安装cpolar内网穿透3.1 配置Cloud Sync公网访问地址 4. 配置固定公网地址 前言 在数字化时代&#xff0c;数据的管理和备份成为了我们日常生活中的一个关键任务。无论是个人还是企业&#…

探索Linux中的进程控制:从启动到退出的背后原理

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 进程控制是操作系统对进程的创建、运行、调度、中止等活动进行管理和协调的行为。它是操作系统中至关重要的一部分&#xff0c;保证多任务处理环境下的资源分配和系统稳定性。 进程创建 fork( ) fork() 调…

密码无关认证:金融机构如何解决密码问题

密码安全问题&#xff0c;依然是金融行业面临的重大挑战。尽管密码简单易用&#xff0c;但许多金融机构仍然依赖这种方式进行身份认证。幸运的是&#xff0c;随着技术的发展&#xff0c;密码无关认证已经成为一种更加安全、便捷的选择&#xff0c;它能够为数字银行带来更好的用…

HarmonyOS基于ArkTS卡片服务

卡片服务 前言 Form Kit&#xff08;卡片开发框架&#xff09;提供了一种在桌面、锁屏等系统入口嵌入显示应用信息的开发框架和API&#xff0c;可以将应用内用户关注的重要信息或常用操作抽取到服务卡片&#xff08;以下简称“卡片”&#xff09;上&#xff0c;通过将卡片添加…

运算放大器应用电路设计笔记(六)

6.1输出失调电压发生的原因与计算 6.1.1用噪声增益进行评价 若运算放大器两个输入端接地&#xff0c;则理想运放输出为零&#xff0c;但实际的运放输出不为零&#xff0c;有一定的直流输出电压。这种直流电压称为输出失调电压。发生的原因是&#xff0c;运算放大器内部元件尤…

【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项

文章目录 S10L45 Working with Multiple Windows1 水平分割窗口2 在水平分割的新窗口中显示其它文件内容3 垂直分割窗口4 窗口的关闭5 在同一窗口水平拆分出多个窗口6 关闭其余窗口7 让四个文件呈田字形排列8 光标在多窗口中的定位9 调节子窗口的尺寸大小10 变换子窗口的位置11…

【算法】经典博弈论问题——巴什博弈 python

目录 前言巴什博弈(Bash Game)小试牛刀PN分析实战检验总结 前言 博弈类问题大致分为&#xff1a; 公平组合游戏、非公平组合游戏&#xff08;绝大多数的棋类游戏&#xff09;和 反常游戏 巴什博弈(Bash Game) 一共有n颗石子&#xff0c;两个人轮流拿&#xff0c;每次可以拿1~m颗…

电脑如何访问手机文件?

手机和电脑已经深深融入了我们的日常生活&#xff0c;无时无刻不在为我们提供服务。除了电脑远程操控电脑外&#xff0c;我们还可以在电脑上轻松地访问Android或iPhone手机上的文件。那么&#xff0c;如何使用电脑远程访问手机上的文件呢&#xff1f; 如何使用电脑访问手机文件…

CTF随题思路—简单的base编码

打开是一大段base64编码&#xff0c;多次解码后再用base92解码

顺序表和链表(详解)

线性表 线性表&#xff08; linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。…

vxe-table和element表尾合计行

1、vxe-table vxe-table的表尾合计&#xff0c;需要show-footer和footer-method搭配使用。 <vxe-table:data"tableData"ref"vxeRef"border resizable :footer-method"footerMethod":show-footer"true" >…

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…