掌握 JavaScript:从初学者到高级开发者的完整指南(三)-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

JavaScript基础知识

BOM对象

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

BOM中提供了如下5个对象

对象名称描述
Window浏览器窗口对象
Navigator浏览器对象
Screen屏幕对象
History历史记录对象
Locationd地址栏对象

上述5个对象与浏览器各组成对应的关系如下图所示

在这里插入图片描述

1 Window对象

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

window.alert('hello');

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

alert('hello')

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

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

属性描述
history用于获取history对象
location用于获取location对象
Navigator用于获取Navigator对象
Screen用于获取Screen对象

也就是说我们要使用location对象只需要通过代码window.location或者简写location即可使用

window也提供了一些常用的函数如下表格所示

函数描述
alert()显示带有一段消息和一个确认按钮的警告框。
comfirm()显示带有一段消息以及确认按钮和取消按钮的对话框。
setInterval()按照指定的周期以毫秒计来调用函数或计算表达式。
setTimeout()在指定的毫秒数后调用函数或计算表达式。

代码演示

  • alert()函数弹出警告框函数的内容就是警告框的内容

    <script>
        //window对象是全局对象window对象的属性和方法在调用时可以省略window.
        window.alert("Hello BOM");
        alert("Hello BOM Window");
    </script>
    

    浏览器打开依次弹框此处只截图一张

    在这里插入图片描述

  • confirm()函数弹出确认框并且提供用户2个按钮分别是确认和取消。

    添加如下代码

    confirm("您确认删除该记录吗?");
    

    浏览器打开效果如图所示

在这里插入图片描述

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

var flag = confirm("您确认删除该记录吗?");
alert(flag);
  • setInterval(fn,毫秒值)定时器用于周期性的执行某个功能并且是循环执行。该函数需要传递2个参数

    fn:函数需要周期性执行的功能代码

    毫秒值间隔时间

    注释掉之前的代码添加代码如下

    //定时器 - setInterval -- 周期性的执行某一个函数
    var i = 0;
    setInterval(function(){
         i++;
         console.log("定时器执行了"+i+"次");
    },2000);
    

    刷新页面浏览器每个一段时间都会在控制台输出结果如下

    在这里插入图片描述

  • setTimeout(fn,毫秒值) 定时器只会在一段时间后执行一次功能。参数和上述setInterval一致

    注释掉之前的代码添加代码如下

    //定时器 - setTimeout -- 延迟指定时间执行一次 
    setTimeout(function(){
    	alert("JS");
    },3000);
    

    浏览器打开3s后弹框关闭弹框发现再也不会弹框了。

2 Location对象

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

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

浏览器效果如下首先弹框展示浏览器地址栏信息

在这里插入图片描述

然后点击确定后因为我们设置了地址栏信息所以浏览器跳转到传智首页

完整代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-BOM</title>
</head>
<body>
    
</body>
<script>
    //获取
    // window.alert("Hello BOM");
    // alert("Hello BOM Window");

    //方法
    //confirm - 对话框 -- 确认: true , 取消: false
    // var flag = confirm("您确认删除该记录吗?");
    // alert(flag);

    //定时器 - setInterval -- 周期性的执行某一个函数
    // var i = 0;
    // setInterval(function(){
    //     i++;
    //     console.log("定时器执行了"+i+"次");
    // },2000);

    //定时器 - setTimeout -- 延迟指定时间执行一次 
    // setTimeout(function(){
    //     alert("JS");
    // },3000);
    
    //location
    alert(location.href);

    location.href = "https://www.itcast.cn";

</script>
</html>

DOM对象

1 DOM介绍

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

DOM 其实我们并不陌生之前在学习 XML 就接触过只不过 XML 文档中的标签需要我们写代码解析而 HTML 文档是浏览器解析。封装的对象分为

  • Document整个文档对象
  • Element元素对象
  • Attribute属性对象
  • Text文本对象
  • Comment注释对象

如下图左边是 HTML 文档内容右边是 DOM 树

在这里插入图片描述

那么我们学习DOM技术有什么用呢主要作用如下

  • 改变 HTML 元素的内容
  • 改变 HTML 元素的样式CSS
  • 对 HTML DOM 事件作出反应
  • 添加和删除 HTML 元素

2 获取DOM对象

我们知道DOM的作用是通过修改HTML元素的内容和样式等来实现页面的各种动态效果但是我们要操作DOM对象的前提是先获取元素对象然后才能操作。

  • 如何获取DOM中的元素对象Element对象 也就是标签
  • 如何操作Element对象的属性,也就是标签的属性。

接下来我们先来学习如何获取DOM中的元素对象。

HTML中的Element对象可以通过Document对象获取而Document对象是通过window对象获取的。document对象提供的用于获取Element元素对象的api如下表所示

函数描述
document.getElementById()根据id属性值获取返回单个Element对象
document.getElementsByTagName()根据标签名称获取返回Element对象数组
document.getElementsByName()根据name属性值获取返回Element对象数组
document.getElementsByClassName()根据class属性值获取返回Element对象数组

演示上述api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-DOM</title>
</head>

<body>
    <img id="h1" src="img/off.gif">  <br><br>

    <div class="cls">传智教育</div>   <br>
    <div class="cls">黑马程序员</div>  <br>

    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
</body>

</html>
  • document.getElementById() 根据标签的id属性获取标签对象id是唯一的所以获取到是单个标签对象。

    添加如下代码

    <script>
    //1. 获取Element元素
    
    //1.1 获取元素-根据ID获取
     var img = document.getElementById('h1');
     alert(img);
    </script>
    

    浏览器打开效果如图所示从弹出的结果能够看出这是一个图片标签对象

    在这里插入图片描述

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

    添加如下代码:

    //1.2 获取元素-根据标签获取 - div
    var divs = document.getElementsByTagName('div');
    for (let i = 0; i < divs.length; i++) {
         alert(divs[i]);
    }
    

    浏览器输出2次如下所示的弹框

    在这里插入图片描述

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

    添加如下代码

    //1.3 获取元素-根据name属性获取
    var ins = document.getElementsByName('hobby');
    for (let i = 0; i < ins.length; i++) {
        alert(ins[i]);
    }
    

    浏览器会有3次如下图所示的弹框

    在这里插入图片描述

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

    添加如下图所示的代码

    //1.4 获取元素-根据class属性获取
    var divs = document.getElementsByClassName('cls');
    for (let i = 0; i < divs.length; i++) {
         alert(divs[i]);
    }
    

    浏览器会弹框2次都是div标签对象

    在这里插入图片描述

  • 操作属性

可以通过div标签对象的innerHTML属性来修改标签的内容。此时我们想把页面中的传智教育替换成传智教育666所以要获取2个div中的第一个所以可以通过下标0获取数组中的第一个div注释之前的代码编写如下代码

var divs = document.getElementsByClassName('cls');
var div1 = divs[0];

div1.innerHTML = "传智教育666";

浏览器刷新页面展示效果如下图所示

在这里插入图片描述

发现页面内容变成了传智教育666

完整代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-DOM</title>
</head>

<body>
    <img id="h1" src="img/off.gif">  <br><br>

    <div class="cls">传智教育</div>   <br>
    <div class="cls">黑马程序员</div>  <br>

    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
</body>

<script>
    //1. 获取Element元素

    //1.1 获取元素-根据ID获取
    // var img = document.getElementById('h1');
    // alert(img);

    //1.2 获取元素-根据标签获取 - div
    // var divs = document.getElementsByTagName('div');
    // for (let i = 0; i < divs.length; i++) {
    //     alert(divs[i]);
    // }


    //1.3 获取元素-根据name属性获取
    // var ins = document.getElementsByName('hobby');
    // for (let i = 0; i < ins.length; i++) {
    //     alert(ins[i]);
    // }


    //1.4 获取元素-根据class属性获取
    // var divs = document.getElementsByClassName('cls');
    // for (let i = 0; i < divs.length; i++) {
    //     alert(divs[i]);
    // }



    //2. 查询参考手册, 属性、方法
    var divs = document.getElementsByClassName('cls');
    var div1 = divs[0];
    
    div1.innerHTML = "传智教育666";

</script>
</html>

JavaScript事件

1 事件介绍

如下图所示的百度注册页面当我们用户输入完内容百度可以自动的提示我们用户名已经存在还是可以使用。那么百度是怎么知道我们用户名输入完了呢这就需要用到JavaScript中的事件了。

在这里插入图片描述

什么是事件呢HTML事件是发生在HTML元素上的 “事情”例如

  • 按钮被点击
  • 鼠标移到元素上
  • 输入框失去焦点

而我们可以给这些事件绑定函数当事件触发时可以自动的完成对应的功能。这就是事件监听。例如对于我们所说的百度注册页面我们给用户名输入框的失去焦点事件绑定函数当我们用户输入完内容在标签外点击了鼠标对于用户名输入框来说失去焦点然后执行绑定的函数函数进行用户名内容的校验等操作。JavaScript事件是js非常重要的一部分接下来我们进行事件的学习。那么我们对于JavaScript事件需要学习哪些内容呢我们得知道有哪些常用事件然后我们得学会如何给事件绑定函数。

  • 事件绑定
  • 常用事件

2 事件绑定

JavaScript对于事件的绑定提供了2种方式

  • 方式1通过html标签中的事件属性进行绑定

    例如一个按钮我们对于按钮可以绑定单机事件可以借助标签的onclick属性属性值指向一个函数。

    在VS Code中创建名为09. JS-事件-事件绑定.html添加如下代码

    <input type="button" id="btn1" value="事件绑定1" onclick="on()">
    

    很明显没有on函数所以我们需要创建该函数代码如下

    <script>
        function on(){
            alert("按钮1被点击了...");
        }
    </script>
    

    浏览器打开然后点击按钮弹框如下

    在这里插入图片描述

  • 方式2通过DOM中Element元素的事件属性进行绑定

    依据我们学习过得DOM的知识点我们知道html中的标签被加载成element对象所以我们也可以通过element对象的属性来操作标签的属性。此时我们再次添加一个按钮代码如下

    <input type="button" id="btn2" value="事件绑定2">
    

    我们可以先通过id属性获取按钮对象然后操作对象的onclick属性来绑定事件代码如下

    document.getElementById('btn2').onclick = function(){
        alert("按钮2被点击了...");
    }
    

    浏览器刷新页面点击第二个按钮弹框如下

    在这里插入图片描述

    需要注意的是事件绑定的函数只有在事件被触发时函数才会被调用。

    整体代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>JS-事件-事件绑定</title>
    </head>
    
    <body>
        <input type="button" id="btn1" value="事件绑定1" onclick="on()">
        <input type="button" id="btn2" value="事件绑定2">
    </body>
    
    <script>
        function on(){
            alert("按钮1被点击了...");
        }
    
        document.getElementById('btn2').onclick = function(){
            alert("按钮2被点击了...");
        }
    
    </script>
    </html>
    

3 常见事件

上面案例中使用到了 onclick 事件属性那都有哪些事件属性供我们使用呢下面就给大家列举一些比较常用的事件属性

事件属性名说明
onclick鼠标单击事件
onblur元素失去焦点
onfocus元素获得焦点
onload某个页面或图像被完成加载
onsubmit当表单提交时触发该事件
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开

在代码中提供了10. JS-事件-常见事件.html的文件我们可以通过浏览器打开来观察几个常用事件的具体效果

  • onfocus:获取焦点事件鼠标点击输入框输入框中光标一闪一闪的就是输入框获取焦点了

    在这里插入图片描述

  • onblur:失去焦点事件前提是输入框获取焦点的状态下在输入框之外的地方点击光标从输入框中消失了这就是失去焦点。

    在这里插入图片描述

后记
美好的一天到此结束下次继续努力欲知后续请看下回分解写作不易感谢大家的支持

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: JavaScriptJava

“掌握 JavaScript:从初学者到高级开发者的完整指南(三)-CSDN博客” 的相关文章