Web API

2023-10-31

Web API基本认知

  • 作用和分类
    • 作用:就是使用JS去操作HTML和浏览器
    • 分类:DOM(文档对象模型)、BOM(浏览器对象模型)
  • 什么是DOM
    • DOM(Document Object Model——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API
    • DOM是浏览器提供的一套专门用来操作网页内容的功能
    • DOM作用:开发网页内容特效和实现用户交互

  • DOM树是什么
    • 将HTML文档以树状结构直观的表现出来,我们称之为文档树或DOM树
    • 描述网页内容关系的名词
    • 作用:文档树直观的提现了标签与标签之间的关系

  • DOM对象:浏览器根据HTML标签生成的JS对象
    • 所有的标签属性都可以在这个对象上面找到
    • 修改这个对象的属性会自动映射到标签上
  • DOM的核心思想
    • 把网页内容当做对象来处理
  • document对象:
    • 是DOM里面提供的一个对象
    • 所以它提供的属性和方法都是用来访问和操作网页内容的
    • 网页所有内容都在document里面

获取DOM元素

根据Css选择器来获取DOM元素

目标:能查找/获取DOM对象

  • 查找元素DOM元素就是利用JS选择页面中标签元素

  • 选择匹配的第一个元素

    document.querySelector('css选择器')
    

    参数:
    包含一个或多个有效的CSS选择器 字符串
    返回值:
    CSS选择器匹配的第一个元素,一个HTMLElement对象
    如果没有匹配到,则返回null

  • 选择匹配的多个元素

    document.querySelectorAll('css选择器')
    

    参数:
    包含一个或多个有效的CSS选择器 字符串
    返回值:
    CSS选择器匹配的 Node List 对象集合
    例如:

    document.querySelectorAll('ul li')
    

    得到的是一个 伪数组
    有长度所引号的数组
    但是没有pop() push()等数组方法
    想要得到里面的每一个对象,则需要遍历的方式获得

其它获取DOM元素方法

// 根据id获取一个元素
document.getElementByid('nav')
// 根据标签获取一类元素 获取页面所有 div
document.getElementsByTagName('div')
// 根据类名获取元素 获取页面所有类名为w的
document.getElementsByClassName('w')

操作元素内容

  • 对象.innerText属性
    1. 将文本内容添加/更新到任意标签位置
    2. 显示存文本,不解析标签
  • 对象.innerHTML属性
    • 将文本内容添加/更新到任意标签文职
    • 会简析标签,多标签建议使用模板字符

操作元素属性

常用属性

  • 可以通过JS设置/修改标签元素属性,比如通过src跟换图片

  • 最常见的属性比如:href、title、src等

  • 语法:

    对象.属性=
  • 例子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    <img src="./images/1.webp" alt="">
    
    <script>
        // 1.获取图片元素
        const img = document.querySelector('img');
        // 2.修改图片对象的属性
        img.src='./images/2.webp'
        img.title="刚子最帅"
    </script>
    </body>
    </html>
    

元素样式属性

  • 通过style操作属性

    对象.style.样式属性=
  • 操作类名(className)操作CSS

    对象.className='类名'
    

    注意:

    1. 由于Class是关键字,所以使用className去代替
    2. className是使用新值换旧值,如果需要添加一个类,需要保留之前类名

    例子:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
      <style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
        }
        .box{
            width: 300px;
            height: 300px;
            background-color: yellow;
        }
      </style>
    </head>
    <body>
    <div></div>
    <script>
        // 获取元素
        const div = document.querySelector('div')
        // 添加类名
        div.className='box'
    </script>
    </body>
    </html>
    
  • 通过classList操作类控制CSS

    // 添加一个类
    对象.classList.add('类名')
    // 删除一个类
    对象.classList.remove('类名')
    // 切换一个类
    对象.classList.toggle('类名')
    

表单元素属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--<input type="text" value="小吴在敲Bug">-->
<input type="checkbox" name="" id="">
<script>
    // 获取对象
    // const uname = document.querySelector('input')
    // 获取值
    // console.log(uname.value)
    // 设置表单的值
    // uname.value='我不要敲Bug'
    const ipt = document.querySelector('input')
    //console.log(ipt.checked) //false
    ipt.checked = true      //选中
</script>
</body>
</html>

定时器-间歇函数

  • 开启定时器

    setInterval(函数,间隔时间)
    

    作用: 每隔一段时间调用这个函数
    间隔时间单位是毫秒

  • 关闭定时器

    clearInterval(变量名)
    

    例子:

    <script>
      // setInterval(函数,间歇时间)
      // setInterval(function(){
      //     console.log('一秒执行一次')
      // },1000)
      const interval = setInterval(function (){
          console.log('三秒执行一次')
      },3000);
      // 关闭定时器
      clearInterval(interval)
    </script>
    

定时器-延时函数

  • JavaScript内置的一个用来让代码延迟执行的函数,叫 setTimeout

  • 语法:

    setTimeout(回调函数,等待的毫秒数)
    
  • setTimeout 仅仅只执行一次,所以可以理解为就是把一段代码延迟执行,平时省略window


  • 清除延时函数:

    let timer = setTimeout(回调函数,等待的毫秒数)
    clearTimeout(timer)
    

两种定时器对比: 执行的次数

  • 延时函数:执行一次
  • 间歇函数:每隔一段时间就执行一次,除非手动清除

事件监听

  • 语法:

    对象.addEventListener('事件类型',要执行的函数)
    
  • 事件监听三要素:

    • 事件源: 那个DOM元素背事件触发了,要获取DOM元素
    • 事件类型: 用什么方式触发,比如鼠标单击click,鼠标经过mouseover等
    • 事件调用的函数: 要做什么事

事件类型

  • 鼠标触发:
    • click —— 鼠标单击
    • mouseenter —— 鼠标经过
    • mouseleave —— 鼠标离开
  • 表单获得光标:
    • focus —— 获得焦点
    • blur —— 失去焦点
  • 键盘触发:
    • keydown —— 键盘按下触发
    • keyup —— 键盘抬起触发
  • 文本事件
    • inpu —— 用户输入事件
  • 页面滚动事件:
    • scroll
    window.addEventListener("scroll", function() {
    // 在这里编写滚动事件的处理逻辑
    });
    

事件对象

  • 事件对象是什么
    • 也是一个对象,这个对象里有事件触发时的相关信息
    • 例如:鼠标点击事件中,事件对象就存了鼠标点击在那个位置等信息
  • 使用场景
    • 可以判定用户按下哪个键,比如按下回车键可以发送消息
    • 可以判定鼠标点击了哪个元素,从而做相应的操作

  • 语法:如何获取
    • 在事件绑定的回调函数的第一个参数就是事件对象
    • 一般命名为event、ev、e
    对象.addEventListener('click',function(e){})
    

  • 部分常用属性:
    • type 获取当前的事件类型
    • clientX/clientY 获取光标相对于浏览器可见窗口左上角的位置
    • offsetX/offsetY 获取光标相对于当前DOM元素左上角的位置
    • key 用户按下的键盘键的值

日期对象

  • 日期对象:用来表示时间的对象
  • 作用:可以得到当前系统时间

实例化

  • 在代码中发现了new关键字时,一般将这个操作称为实例化
  • 创建一个时间对象并获取事件
    • 获得当前时间

      const date = new Date()
      
    • 获得指定时间

      const date = new Date('2022-06-19')
      

日期对象方法

方法 作用 说明
getFullYear() 获得年份 获取四位年份
getMonth() 获得月份 取值为0~11
getDate() 获取月份中的每一天 不同月份取值也不相同
getDay() 获取星期 取值为0~6
getHours() 获取小时 取值0~23
getMinutes() 获取分钟 取值为0~59
getSeconds() 获取秒 取值为0~59

时间戳

三种获取时间戳方式

  • 使用getTime()方法

    const date = new Date()
    console.log(date.getTime())
    
  • 简写:+new Date()

    console.log(+new Date())
    
  • 使用Date.now()

    • 无需实例化
    • 但是只能打到时间戳,前面两种可以返回指定的时间戳
    console.log(Date.now())
    

节点操作

DOM节点

  • DOM节点:
    • DOM树里每一个内容都称之为节点
  • 节点类型:
    • 元素节点
      • 所有的标签比如body、div
      • html是根节点
    • 属性节点
      • 所有的属性 比如 href
    • 文本节点
      • 所有的文本
    • 其他

查找节点

  • 节点关系:针对的找亲戚返回的都是对象
    • 父节点
    • 子节点
    • 兄弟节点

  • 父节点查找:

    • parentNode属性
    • 返回最近一级父节点找不到返回null
    子对象.parentNode
    
  • 子节点查找

    • 获得所有子节点、包括文本节点(空格、换行)、注释节点等

    • children

      • 获得所有元素节点
      • 返回的是一个伪数组
      父对象.childern
      
  • 兄弟关系查找:

    • 下一个兄弟节点
      对象.nextElementSibling
      
    • 上一个兄弟节点
      对象.previousElementSibling
      

增加节点

创建节点

  • 即创造出一个新的网页元素,再添加到网页内,一般先穿件节点,然后插入节点

  • 创建元素节点的方法:

    document.createElement('标签名')
    
  • 插入到父元素中某个子元素的前面

    父对象.insertBefore(要插入的元素,在那个元素前面)
    

克隆节点

对象.cloneNode(布尔值)
  • 若为true,则代表克隆时会包含后代节点一起克隆
  • 若为false,则代表克隆时不包含后代节点
  • 默认为false

删除节点

  • 若一个节点在页面中不需要时,可以删除它

  • 在JavaScript原生DOM操作中,要删除元素必须通过父元素删除

  • 语法

    父对象.removeChile(要删除的对象)
    
  • 注意:

    • 如不存在父子关系则删除不成功
    • 删除节点和隐藏节点(display:none)有区别的:隐藏节点还是存在的,但是删除,则从html中删除节点

Window对象

location对象

  • location的数据类型是对象,它拆分并保存了URL地址的各个组成部分
  • 常用属性和方法:
    • href属性获取完整的URL地址,对其赋值时用于地址的跳转

      // 可以得到当前文件URL地址
      console.log(location.href)
      // 可以通过js方式跳转到目标地址
      location.href = 'www.baidu.com'
      
    • serach属性获取地址中携带的参数,符号 ? 后面部分

      console.log(location.search)
      
    • hash属性获取地址中的哈希值,符号#后面部分

      console.log(location.hash)
      
    • reload方法用来刷新当前页面,传入参数true时表示强制刷新

       location.reload(true)
      

navigator对象

  • navigator的数据类型是对象,该对象记录了浏览器自身的相关信息
  • 常用属性和方法
    • 通过userAgent检测浏览器的版本及平台
      // 检测 userAgent(浏览器信息)
      !(function () {
        const userAgent = navigator.userAgent; // 验证是否为Android或iPhone
        const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/);
        const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/); 
        // 如果是Android或iPhone,则跳转至移动站点
        if (android || iphone) {
          location.href = "http://m.goudong.com";
        }
      })();
      

histroy对象

  • history的数据类型是对象,主要管理历史记录,该对象与浏览器地址拦的操作相对应,如前进、后退、历史记录等
  • 常用属性和方法:
    history对象方法 作用
    back() 后退功能
    forward() 前进功能
    go(参数) 前进后退功能参数如果是1前进1个页面,如果是-1后退1个页面

本地存储

本地存储介绍

  • 以前我们页面写的数据一刷新页面就没有了
  • 随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案
    1. 数据存储在用户浏览器中
    2. 设置、读取方便、甚至页面刷新不丢失数据
    3. 容量较大,sessionStorage和localStorage约5M左右

本地存储分类-localStorage

  • 作用:可以将数据永久存储在本地(用户的电脑),除非手动删除,否则关闭页面也会存在
  • 特性:
    • 可以多窗口(页面)共享(统一浏览器可以共享)
    • 以键值对的形式存储使用

语法:

  • 存储数据:
    localStorage.setItem(key,value)
    
  • 获取数据:
    localStorage.getItem(key)
    
  • 删除元素
    localStorage.removeItem(key)
    

本地存储分类-sessionStorage

  • 特性:
    • 生命周期为关闭浏览器窗口
    • 在同一个窗口(页面)下数据可以共享
    • 以键值对的形式存储使用
    • 用法跟localStorage基本相同

本地存储处理复杂数据类型

  • 本地只能存储字符串,无法存储复杂数据类型

  • 解决:需要将复杂数据类型转换成JSON字符串,再存储到本地
  • 语法:JSON.stringify(复杂数据类型)

  • 将JSON字符串转换为对象

    JSON.parse(字符串)
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web API 的相关文章

随机推荐

  • Weblogic-SSRF漏洞复现

    SSRF漏洞存在于http your ip 7001 uddiexplorer SearchPublicRegistries jsp 我们在brupsuite下测试该漏洞 访问一个可以访问的IP PORT 如http 127 0 0 1 7
  • python接口自动化参数传递_2、Python接口自动化系列之unittest结合ddt的使用

    前面一篇我们已经把unittest的常用用法都已经讲过了 可能很多小伙伴有个疑问 unittest框架怎么做数据驱动呢 这节我们就来学习一下 1 unittest 没有自带数据驱动功能 所以如果使用unittest 同时又想使用数据驱动 那
  • vue 后端数据成功返回 页面不渲染_vue能获取到数据数据却渲染不到页面上,为什么?...

    问题描述 从后台可以拿到数据 并打印在控制台但是就是渲染不到页面 我也不知道是为什么 感觉都正常 问题出现的环境背景及自己尝试过哪些方法 尝试用let this this来代替this但是还是没用并且报出success是undefined的
  • 121-----JS基础-----滚轮事件(鼠标)

    一 代码 很简单
  • angularjs--------选择下拉框

    div class id div
  • The NVIDIA driver on your system is too old (found version 10000)

    问题 原因是因为CUDA版本与pytorch版本不匹配 解决办法 查看自己的CUDA版本 我的是CUDA 10 0 https pytorch org 把这行复制到Anaconda Prompt窗口就行了
  • CPU虚拟化

    CPU虚拟化 中央处理器 CPU 是计算机的主要设备之一 是计算机中的核心配件 在计算机体系结构中 CPU是对计算机的所有硬件资源 如存储器 输入输出单元 进行控制调配 执行通用运算的核心硬件单元 计算机系统中所有软件层的操作 最终都将通过
  • @ControllerAdvice 的介绍及三种用法

    学习下 ControllerAdvice 首先 ControllerAdvice本质上是一个 Component 因此也会被当成组建扫描 加了 ControllerAdvice的类为那些声明了 ExceptionHandler InitBi
  • IP地址分类(A类 B类 C类 D类 E类)

    IP地址由四段组成 每个字段是一个字节 8位 最大值是255 IP地址由两部分组成 即网络地址和主机地址 网络地址表示其属于互联网的哪一个网络 主机地址表示其属于该网络中的哪一台主机 二者是主从关系 IP地址的四大类型标识的是网络中的某台主
  • 如何完美解答面试问题——HashMap的扩容机制(JDK1.7)

    大家好 我是孤焰 今天要谈一谈在面试过程中几乎被每个面试官都会提到的一个问题 HashMap的扩容机制是什么 由于我也是刚刚学习编程的小白 所以此篇博文将参考了多篇博文 最后总结而成 此篇博文仅介绍JDK1 8版本之前的HashMap扩容机
  • Unity3D 动画操作

    导入模型 https blog csdn net shenqiankk article details 100064940 方式一 Animator animation SetBool 状态转换的参数 true false 在创建对象前 先
  • 【计算机网络】数据链路层(一):数据帧和物理寻址

    数据链路层是物理层的上层 物理层是把电脑连接起来的物理手段 它主要规定了网络的一些电气属性 其作用是负责传送0和1的电信号 数据链路层位于物理层的上层 简单的阐述它的作用就是确定0和1的分组方式 下面我们就详细的介绍数据链路层 上面是TCP
  • 阿里云DNS 新增云上线路的智能解析功能

    简介 企业在云上部署单元化架构或内部服务链路时 需要考虑让数据 单元 离用户更近 避免跨单元获取数据 以此来满足自身低延时的诉求 阿里云DNS 新增基于云上链路的调度功能 进一步优化DNS智能解析 给云上用户提供更精准的流量调度能力 传统解
  • 基于STM32串口通信的ESP8266WiFi模块使用

    掌握esp8266的使用可以实现真正的万物物联 esp8266wifi通信对于MCU而言归结到底还是串口或spi通信 因此 掌握RS232通信协议 SPI通信协议以及esp8266的配置就可以基本搞定WiFi模块的使用 参考文章 1 ESP
  • 安全帽佩戴检测算法模型训练详细流程

    一 任务描述 实际施工现场需要对每个进出的人员进行安全帽监测 对未佩戴安全帽的人员平台进行风险告警 通知工作人员并记录下来 主要包括三类目标物体 头盔 helmet 人 person 和人头 head 二 实现流程 1 数据集 直接用的网络
  • C++I/O输入输出

    1 流和缓冲区 我们通常说的流 可以理解为从一个地方流向另一个地方 在C 中的I O是指的输入 输出端口 那么I O流就可以简单的理解为在外部设备和内存之间的数据流动 直白的讲 流实际上是一个字节序列 即 字节流 而C 程序把输入输出看做字
  • WIN11修改右键菜单默认展开

    想要展开右键菜单 像Windows 10那样 首先打开Terminal写入注册表项 展开 reg exe add HKCU Software Classes CLSID 86ca1aa0 34aa 4e8b a509 50c905bae2a
  • JAVA中的数据结构和底层原理

    JAVA中的数据结构简述 JAVA中常用的数据结构主要有这样几种分类 List 可存储相同的值 确切讲是a equals b 时 二者都可存储 我们会挑选适宜连续存储的ArrayList和链式存储的LinkedList进行介绍 Set 不可
  • 数据结构-leetcode-环形链表

    解题图解 代码如下 bool hasCycle struct ListNode head struct ListNode fast head 在这里fast是快指针 head作为low指针 因为这个题不需要做修改也只需返回true或fals
  • Web API

    文章目录 Web API基本认知 获取DOM元素 根据Css选择器来获取DOM元素 其它获取DOM元素方法 操作元素内容 操作元素属性 常用属性 元素样式属性 表单元素属性 定时器 间歇函数 定时器 延时函数 事件监听 事件类型 事件对象