当前位置: 首页 > article >正文

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.kler.cn/a/518783.html

相关文章:

  • 嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结
  • 数据库视图
  • 在Qt中实现点击一个界面上的按钮弹窗到另一个界面
  • 【2025年数学建模美赛F题】(顶刊论文绘图)模型代码+论文
  • 跟我学C++中级篇——容器的连接
  • Kubectl 与 Helm 详解
  • 16.知识图谱中的本体、实体、属性与关系:区别与联系
  • Redis缓存:春招面试的关键知识点
  • Electron版本列表
  • 【自然语言处理(NLP)】循环神经网络RNN
  • 【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)
  • 【Flask】在Flask应用中使用Flask-Limiter进行简单CC攻击防御
  • 钉钉群机器人设置——python版本
  • Android AOP:aspectjx
  • 二叉树的最小深度力扣--111
  • 嵌入式MCU面试笔记2
  • HBase的原理
  • c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)
  • 9.像素概念
  • 利用机器学习创建基于位置的推荐程序
  • 自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 【Linux】命令为桥,存在为岸,穿越虚拟世界的哲学之道
  • adc和dma的使用原理和过程
  • L9305驱动组件接口TESSY测试
  • OpenFGA
  • 小识JVM堆内存管理的优化机制TLAB