JavaScript学习笔记(3)

news2025/1/24 11:25:53

一.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.coloradmin.cn/o/2281391.html

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

相关文章

DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)

五、数据处理与 ETL 流程编程实现 5.1 数据抽取与转换(ETL) 在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析使用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字…

【玩转全栈】----YOLO8训练自己的模型并应用

继上篇&#xff1a; 【玩转全栈】---基于YOLO8的图片、视频目标检测-CSDN博客 相信大家已经可以训练一些图片和视频了&#xff0c;接下来我将为大家介绍如何训练自己的特定模型&#xff0c;并用其进行检测 目录 准备数据 图片数据 标识数据 配置文件 运行 测试训练结果 存在的问…

简洁实用的wordpress外贸模板

简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…

Caesar

Caesar 打开.txt: oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} 根据题目判断是凯撒密码&#xff0c;flag前头是cyberpeace{}&#xff0c;可以得到偏移量是12. 所以&#xff1a; cyberpeace{you_have_learned_caesar_encryption} 下面是我找的关于凯撒密码的解密脚本 c…

OpenEuler学习笔记(四):OpenEuler与CentOS的区别在那里?

OpenEuler与CentOS的对比 一、基本信息 起源与背景&#xff1a; OpenEuler&#xff1a;由华为发起&#xff0c;后捐赠给开放原子开源基金会&#xff0c;旨在构建一个开放、多元化的云计算和边缘计算平台&#xff0c;以满足华为及其他企业的硬件和软件需求。CentOS&#xff1a;…

纯css实现div宽度可调整

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>纯css实现div尺寸可调整</title><style…

Cesium特效——城市白模的科技动效的各种效果

最终效果图如下&#xff1a; 实现方法&#xff1a; 步骤一&#xff1a;使用cesiumlib生产白模&#xff0c;格式为3dtiles 注意事项&#xff1a;采用其他方式可能导致白模贴地&#xff0c;从而导致不能实现该效果&#xff0c;例如把步骤二的服务地址改为Cesium Sandcastle 里的…

JavaWeb 学习笔记 XML 和 Json 篇 | 020

今日推荐语 愿你遇见好天气,愿你的征途铺满了星星——圣埃克苏佩里 日期 学习内容 打卡编号2025年01月23日JavaWeb笔记 XML 和 Json 篇020 前言 哈喽&#xff0c;我是菜鸟阿康。 以下是我的学习笔记&#xff0c;既做打卡也做分享&#xff0c;希望对你也有所帮助…

【力扣:新动计划,编程入门 —— 题解 ②】

—— 25.1.23 1512. 好数对的数目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1,1,3] 输出&#xff1a;4 解释&#xff…

如何在data.table中处理缺失值

&#x1f4ca;&#x1f4bb;【R语言进阶】轻松搞定缺失值&#xff0c;让数据清洗更高效&#xff01; &#x1f44b; 大家好呀&#xff01;今天我要和大家分享一个超实用的R语言技巧——如何在data.table中处理缺失值&#xff0c;并且提供了一个自定义函数calculate_missing_va…

《RWA全球产业白皮书》发布:向凌云教授解析全球经济转型与RWA的未来

2025年1月16日&#xff0c;旅美经济学家、全球新兴产业金融专家向凌云教授在美国发布了引人注目的《RWA全球产业白皮书》。该白皮书通过深入分析全球产业结构变化&#xff0c;尤其强调了“真实世界资产”&#xff08;Real-World Assets&#xff0c;简称RWA&#xff09;在当前及…

TOGAF之架构标准规范-信息系统架构 | 数据架构

TOGAF是工业级的企业架构标准规范&#xff0c;信息系统架构阶段是由数据架构阶段以及应用架构阶段构成&#xff0c;本文主要描述信息系统架构阶段中的数据架构阶段。 如上所示&#xff0c;信息系统架构&#xff08;Information Systems Architectures&#xff09;在TOGAF标准规…

安宝特方案 | AR在供应链管理中的应用:提升效率与透明度

随着全球化的不断深入和市场需求的快速变化&#xff0c;企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本&#xff0c;并确保信息的透明度&#xff0c;成为了各大行业亟待解决的问题。而增强现实&#xff08;AR&#xff09;技术&#xff0c;特别…

C语言数组详解:从基础到进阶的全面解析

在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储多个相同类型的数据。数组的引入使得C语言能够高效地存储和操作大量数据。在任何一个C语言程序中&#xff0c;数组都发挥着极其重要的作用。无论是在算法实现、数据存储、还是在复杂程序的设计中&#xff0c…

阴沟翻船题——Longest Substring Without Repeating Characters

一、事件概述 今天接到一个面试&#xff0c;让线上做题。面试官出了个leetcode的题。题目如图所示&#xff1a; 我没有刷过leetcode&#xff0c;上学时候我们做的hdu-acm和codeforces。咋一接到题目&#xff0c;看到是个字符串题&#xff0c;并且找最长字串&#xff0c;第一反…

ssm基于HTML5的红酒信息分享系统

SSM基于HTML5的红酒信息分享系统是一个专注于红酒领域的综合性信息平台&#xff0c;旨在为红酒爱好者、从业者以及普通消费者提供一个便捷的交流与获取红酒相关信息的空间。 一、系统背景与意义 随着人们生活水平的提高和消费观念的转变&#xff0c;红酒作为一种高雅的饮品&a…

【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )

文章目录 一、Tag Body 数据块体结构 - Video Data 视频数据1、Vedio Data 视频数据 类型标识2、Vedio Data 视频数据 结构分析3、Composition Time Offset 字段涉及的时间计算4、AVC Packet Type 字段说明① AVC Sequence Header 类型② AVC NALU 类型③ AVC End of Sequence …

解决docker: ‘buildx‘ is not a docker command.

简介 buildx 是 Docker 官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建 Docker 镜像&#xff0c;并支持多种平台的构建。使用 buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如 x86 和 ARM 架构&#xff0c;而无需手动操作多个…

Centos类型服务器等保测评整/etc/pam.d/system-auth

修改服务器配置文件/etc/pam.d/system-auth&#xff0c;但是&#xff0c;把一下配置放在password的配置第一行才会生效 执行命令&#xff1a;配置口令要求&#xff1a;大小写字母、数字、特殊字符组合、至少8位&#xff0c;包括强制设置root口令&#xff01; sed -i 14a pas…

精准捕捉,智能训练:数据手套在机器人灵巧手领域的应用探索

数据手套是一种内置多个高精度传感器&#xff0c;能够精准捕捉手部动作数据&#xff0c;并将其转化为数字信号的高科技穿戴设备。 MHand pro动捕数据手套其内置16个高精度传感器&#xff0c;能敏锐感知手指的弯曲、伸展等动作。这些传感器通过复杂的算法&#xff0c;将手部动作…