IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> BOM操作 -> 正文阅读

[JavaScript知识库]BOM操作

一、概念

1.什么是BOM

浏览器对象模型,JavaScript程序提供的操作浏览器的函数方法

2.JavaScript顶级对象

? ? ?是JavaScript定义好的对象

DOM操作的顶级对象

? ? ? ? document? ? ? ? ? ?也就是整个html文档

? ? ? ? document.documentElement? ? ? ?html标签

? ? ? ? document.body? ? ? ? ? ? ? ? ? ? ? ? ? ? body标签

? ? ? ? document.head? ? ? ? ? ? ? ? ? ? ? ? ? ? head标签

? ? ? ? document.title? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title

BOM操作的顶级对象

? ? ? ? window

? ? ? ? ? ? ? ?JavaScript语法规定window可以省略不写

? ? ? ? ? ? ? ?window.alert()

? ? ? ? ? ? ? ?aleert()

二、BOM操作 三大弹窗

1.警告框

? ? ? ? ? ?window.alert('内容');

2.输入框

? ? ? ? ? ?window.prompt('内容');

? ? ? ? ? ?可以使用变量 存储输入的数据,获取的结果:一定是字符串类型

3.确认框

? ? ? ? ? ? window.confrim('内容');

? ? ? ? ? ? 可以使用变量 存储 执行结果返回值

? ? ? ? ? ? 点击 确定 返回值是 true

? ? ? ? ? ? 点击 取消 返回值是 false

//输入框
var num = window.prompt('请输入您想要输入的数字');
//警告框
window.alert(num);
//确认框
var res = window.confirm('您确定要删除吗?');
console.log( res );

输入框:

警告框:

确认框:?

三、视窗窗口 宽度 高度

获取浏览器视窗窗口宽度高度

?包括滚动条宽度

? ? window.innerWidth? ? ? ?window.innerHeight

?不包括滚动条宽度

有文档类型声明 (实际项目中使用的函数方法,只需要重点记这一个即可)

? ? document.documentElement.clientWidth

? ? document.documentElement.clientHeight

没有文档类型声明

? ? document.body.clientWidth

? ? document.body.clientHeight

四、浏览器视窗窗口监听事件

当 视窗窗口 宽度高度改变时 触发对应的函数程序

? ?根据 浏览器视窗窗口宽度 设定需要执行函数程序

? ? ?window.addEventListener('resize',function(){});

案例

<!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>Document</title>
    <style>
      body{
        height: 5000px;
      }
      div{
        width: 1000px;
        height: 100px;
        background: pink;
        margin:50px auto;
      }
    </style>
</head>
<body>

  <div></div>  

  <script>
     
     //获取div标签对象
     var oDiv = document.querySelector('div');
     
     //视窗窗口监听事件
     //当 视窗窗口 宽度高度改变时 触发函数程序
     window.addEventListener('resize',function(){
        //获取 浏览器 视窗窗口的宽度
        var width = document.documentElement.clientWidth;
  
        // 如果 视窗窗口宽度 大于 1200 div的宽度是原始宽度的100%
        if (width > 1200) {
          oDiv.style.width = '1000px';

        // 如果 视窗窗口宽度 在 1200 至 960 div的宽度是原始宽度的 80%
        }else if(width <= 1200 && width > 960) {
          oDiv.style.width = '800px';

        // 如果 视窗窗口宽度 在 960 至 768 div的宽度是原始宽度的 60%
        }else if (width <= 960 && width > 768) {
          oDiv.style.width = '600px';

        // 如果 视窗窗口宽度 小于 768 div的宽度是原始宽度的 40%
        }else if (width <= 768) {
          oDiv.style.width = '400px';
        }

        });
  </script>  

</body>
</html>

有兴趣的小伙伴可以自己去看一下执行结果,类似于响应式布局

五、页面上卷的距离

获取页面上卷的高度

有文档类型声明

? ? document.documentElement.scrollTop

? ? document.documentElement.scrollLeft

没有文档类型声明

? ? ?document.body.scrollTop

? ? ?document.body.scrollLeft

六、页面滚动监听事件

页面滚动触发的函数程序

? window.addEventListener('scroll',function(){})

一般 页面滚动监听事件 每次触发都不会只触发一次

一般 都是 页面滚动一次 触发多次函数程序

案例

<!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>Document</title>
    <style>
      body{
        height: 5000px;
      }
      div{
        width: 100%;
        height: 0px;
        font-size: 80px;
        line-height: 150px;
        background: pink;
        color: #fff;
        text-align: center;
        position:fixed;
        top:0;
        left:0;
        overflow: hidden;
        transition:all 1s;   
      }
    </style>
</head>
<body>

  <div>吸顶效果</div>  

  <script>
     
    //获取div标签对象
    var oDiv = document.querySelector('div');

    //页面滚动监听事件
    window.addEventListener('scroll',function(){

    // 设定 当 页面上卷高度 大于 500 时 让 吸顶div显示
    if (document.documentElement.scrollTop > 500) {
      oDiv.style.height = '150px';

    // 小于等于 500 是 让 吸顶div隐藏
    }else{
      oDiv.style.height = '0px';
    }
    });

     
  </script>  

</body>
</html>

有兴趣的小伙伴可以自己去看一下执行结果

七、浏览器历史记录

当前窗口 浏览的页面个数

? ? window.history.length

返回上一个浏览的页面

? ? window.history.back()

? ? 相当于 浏览器的向右箭头

返回下一个浏览的页面

? ? window.history.forward()

? ? 相当于 浏览器的向右箭头

设定跳转的页面

? ? window.history.go(+ /?- 数值)

? ? 正数 是 向前跳转的页面个数

? ? 负数 是 向后跳转的页面个数

八、浏览器地址栏信息

1. host: "127.0.0.1"

? ? ? window.location.host

? ? ? ? ? ? ? ?服务器地址/域名

2. hostname: "127.0.0.1"

? ? ? ? window.location.hostname

? ? ? ? ? ? ? ? 服务器名称

3. href: "http://127.0.0.1/demo.html"

? ? ? ? window.location.href

? ? ? ? ? ? ? ? 浏览器地址栏url地址

4. origin: "http://127.0.0.1"

? ? ? ? ?window.location.origin

? ? ? ? ? ? ? ? ?服务器源文件地址路径

5. pathname: "/demo.html"

? ? ? ? ?window.location.pathname

? ? ? ? ? ? ? ? ?当前文件的路径地址

6. port: ""

? ? ? ? ?window.location.port

? ? ? ? ? ? ? ? ? 服务器端口号

7. protocol: "http:"

? ? ? ? ?window.location.protocol

? ? ? ? ? ? ? ? ? 服务器协议版本

8. reload: ? reload()

? ? ? ? ? window.location.reload()

? ? ? ? ? ? ? ? ? 刷新当前页面

9. replace: ? replace()

? ? ? ? ? window.location.replace()

? ? ? ? ? ? ? ? ? 替换当前url地址

10. search: "

? ? ? ? ? window.location.search

? ? ? ? ? ? ? ? ? 浏览器地址栏携带参数数据

11. window.open()

? ? ? ? ? ? ? ? 新窗口打开url地址

12.? window.close()

? ? ? ? ? ? ? ? 关闭当前窗口

目前我们先了解掌握以下的几个

window.location.href

? ? ? ?可以获取 当前浏览器地址栏的URL地址

? ? ? ?也可以设定 当前浏览器地址栏的URL地址

? ? ? ?获取

? ? ? ? ? ? ? var? 变量? = window.location.href;

? ? ? ?设定

? ? ? ? ? ? ?window.location.href = 'url地址';

? ? ? ? ? ? ? 行效果 就是 设定 页面跳转的url地址,本窗口打开当前url地址

window.location.seaech

? ? ? ? ?获取浏览器地址栏中 携带的数据参数

? ? ? ? ?跳转当前页面 同时以get方式携带的数据参数

window.location.reload()

? ? ? ? ?刷新当前页面

window.open()

? ? ? ? ?新窗口打开url地址

window.close()

? ? ? ? ?关闭当前窗口

九、页面跳转

标签添加事件 触发事件 执行对应的函数程序

window.location.href = 'url地址'

? ? 跳转 设定的 url地址路径,当前窗口打开

window.open ('url地址路径');

? ?跳转 设定的 url地址路径,新窗口打开

获取 当前浏览器 地址url路径

? ?var 变量 = window.location.href;

? ? ? ? ?获取结果 中文 特殊符号 都是以%十六进制数值形式显示

? ?window.decodeURIComponent()

? ? ? ? ?将 %十六进制 还原为 对应的字符串

? ?window.encodeURIComponent()

? ? ? ? ?将 字符串 转化为 %十六进制

案例

<!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>Document</title>
</head>
<body>
  <button>百度1</button>
  <button>百度2</button>

<script>
  
  //获取 当前url地址栏数据信息
  // url地址栏 中 中文 特殊符号 都已 %两位十六进制数值形式显示
  var url  =window.location.href;
  console.log(url);

  //获取标签对象
  var oBtn1 = document.querySelectorAll('button')[0];
  var oBtn2 = document.querySelectorAll('button')[1]; 

  //添加点击事件
  //当前窗口打开 设定的跳转url路径
  oBtn1.addEventListener('click',function(){
      window.location.href = 'https://www.baidu.com';
  });
  
  //新窗口打开 设定的跳转url路径
  oBtn2.addEventListener('click',function(){
      window.open('https://www.baidu.com');
  });

</script>
</body>
</html>

?十、html跳转页面携带参数

html跳转页面 并且携带参数的方法

1. a标签

? ? ? 跳转页面

? ? ? ? ? ? ? 设定 href的属性值

? ? ? 携带参数

? ? ? ? ? ? ? 在href设定的url地址后 携带参数数据

? ? ? ? ? ? ? 1. 以 ? 间隔 url地址 和 携带参数数据

? ? ? ? ? ? ? 2. 以 键值对形式 携带参数数据? 键名 = 键值

? ? ? ? ? ? ? 3. 多个键名键值之间以 & 符号 间隔

a ? 只能使用get方式传参

? ? ?语法 ? ?<a href="url地址?键名=键值&键名=键值&键名=键值...">内容</a>? ? ? ?

? 这个是我的文件夹

//要跳转的页面地址  并且携带参数
<a href="./00csdn-1.html?name=张三&age=18&sex=男">跳转</a>

? ?运行后

?

点了跳转后

?2.form

? ? ?跳转页面

? ? ? ? ? ? ? ?设定 action属性的属性值

? ? ?设定携带参数方式

? ? ? ? ? ? ? ?action ?属性 设定 跳转的url地址路径

? ? ? ? ? ? ? ?method ?属性 设定 传参方式 get / post

? ? ?标签参数

? ? ? ? ? ? ? ?input 等标签 需要 设定 name属性 以及必要的value属性

? ? ? ? ? ? ? ? ? ? ?name属性 是 前端html标签 存储 标签数据的容器

? ? ? ? ? ? ? ? ? ? ?value属性 是 标签的数据数值

以下代码我是写在 00csdn.html 文件中的,

<!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>Document</title>
</head>

<body>
  <form action="./00csdn-1.html" method="get">
    账户:<input type="text" name="username"><br>
    密码:<input type="password" name="userpass"><br>
    性别:男<input type="radio" name="sex" value="男">
         女<input type="radio" name="sex" value="女">
         保密<input type="radio" name="sex" value="保密"><br>
    爱好:王者荣耀<input type="checkbox" name="hobby" value="王者荣耀">
         和平精英<input type="checkbox" name="hobby" value="和平精英">
         看电影 <input type="checkbox" name="hobby" value="看电影">
         学习编程<input type="checkbox" name="hobby" value="学习编程"><br>
    <button>跳转</button>
  </form>

</body>

</html>

? ?运行后,输入数据?

点击跳转后,就跳到?00csdn-1.html页面

十一、获取浏览器地址栏参数数据

获取浏览器地址栏中携带的参数数据

? ? window.location.search

例:

? ? ? ? ? ?name=张三&age=18&sex=男

? ? ? ? ? ?{name:'张三' , age:18 , sex:'男'}

现在我们来获取 00csdn-1.html?浏览器地址栏中携带的参数数据,以下代码都要写在? 00csdn-1.html文件中

当?00csdn.html 文件代码执行,并跳转后,会携带参数跳转,那我们要做的就是获取它的参数

<script>
     console.log(window.location.search);
</script>

执行结果:

获取的结果 带有 间隔符号 ?

1.可以通过字符串截取 截取不包含?问号的内容

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>Document</title>
</head>

<body>

    <script>
        //console.log(window.location.search);

        //创建一个对象,存储最终结果
        var obj = {};
        //1 获取浏览器地址栏中携带的数据参数,需要截取起始的?问号
        var str = window.location.search.substr(1);
        console.log(str);

        //2 根据间隔符号 & 将 字符串分割为数组
        var arr = str.split('&');
        console.log(arr);

        //3 循环遍历数组
        arr.forEach(function (index) {
            //index 存储的是数组的数值数据,输出index就是字符串"键名=键值"
            //按照 = 等号为间隔 将 键名=键值 分割为数组
            var arr1 = index.split('=');
            console.log(arr1);


            //4 给对象 新增 属性和属性值
            // arr1[0] 是 键名
            // arr1[1] 是 键值 有可能是 %十六进制S
            //前端传参 有可能是 多个不同的键值 使用相同的键名,应该使用 数组的方式 存储

            //就比如,爱好是相同的键名,但是键值有四个
            //那么我们就应该使用 数组的方式 存储

            //调用属性 判断 有没有 这个属性 
            //如果 调用 结果是 undefined 证明 这个键名不存在 
            if (obj[arr1[0]] === undefined) {

                //证明没有这个属性 新增 对象.属性=属性值;
                obj[arr1[0]] = window.decodeURIComponent(arr1[1]);

                // 如果 调用 结果不是 undefined 证明 这个键名已经存在
                //也就是 多个不同数据使用 相同键名存储数据 需要使用数组的形式存储 
            } else {

                //如果 调用的数据 是 字符串类型 证明 已经存储了一个数据
                //那么就需要转为数组存储
                if (typeof (obj[arr1[0]]) === 'string') {
                    // 也就是当前属性存储的是 字符串类型 
                    // 给 当前属性存储数据结构 定义为数组
                    //数组的第一个单元是 属性存储的原始数据 也就是 obj[ arr2[0] ]
                    //数组的第二个单元是 当前的属性值 也就是 arr2[1]
                    obj[arr1[0]] = [obj[arr1[0]], window.decodeURIComponent(arr1[1])];

                    //如果调用的数据 不是 字符串类型 证明 已经用数组存储
                } else {
                    // 也就是当前属性存储的是 数组
                    // 向数组中新增当前数据
                    obj[ arr1[0] ].push(  window.decodeURIComponent( arr1[1] ) );
                }
            }

        });
        console.log(obj);


    </script>
</body>

</html>

在?00csdn.html执行后

点击跳转后,跳到?00csdn-1.html,按F12,就可以看到00csdn-1.html代码执行结果,可以看到获取的浏览器地址栏中携带的参数数据

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:52:39  更:2022-01-14 01:53:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:30:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码