7-WebApis-4

news2024/11/16 19:52:13

Web APIs - 4

目标: 了解DOM节点的增删改查,掌握利用数据操作页面,完成移动端通讯录案例

  • 日期对象
  • 节点操作
  • M端事件
  • JS插件
  • 综合案例

日期对象

日期对象:用来表示日期和时间的对象

作用:可以得到当前系统日期和时间

Date是JavaScript内置对象

日期对象使用必须先实例化:创建一个日期对象并获取时间

在代码中发现了 new 关键字时,一般将这个操作称为实例化

实例化

<body>
  <script>
    // 1. 实例化日期对象
    // 1.1 得到当前的日期和时间
    const date = new Date()
    console.log(date)

    // 1.2 得到指定的日期和时间
    const date1 = new Date('2099-12-12 08:08:08')
    console.log(date1)
  </script>
</body>

格式化日期对象

方法作用说明
getFullYear()获得年份获取四位年份
getMonth()获得月份取值为 0 ~ 11
getDate()获取月份中的每一天不同月份取值也不相同
getDay()获取星期取值为 0 ~ 6
getHours()获取小时取值为 0 ~ 23
getMinutes()获取分钟取值为 0 ~ 59
getSeconds()获取秒取值为 0 ~ 59
<body>
 <script>
   // 2. 格式化日期对象-转换成开发中常见的日期和时间格式
   const myDate = new Date()
   console.log(myDate.getFullYear()) // 得到年份 数字型的 2023
   console.log(myDate.getMonth() + 1) // 得到月份 数字型的 0 需要加1
   console.log(myDate.getDate()) // 得到几号 数字型的 27 
   console.log(myDate.getDay()) // 得到星期  数字型 5 
   console.log(myDate.getHours()) // 得到小时
   console.log(myDate.getMinutes()) // 得到分钟
   console.log(myDate.getSeconds()) // 得到秒数
   console.log(`现在的日期是:${myDate.getFullYear()}${myDate.getMonth() + 1}${myDate.getDate()}`)

 </script>
</body>

格式化日期对象另外方法

方法作用说明
toLocaleString()返回该日期对象的字符串(包含日期和时间)2099/9/20 18:30:43
toLocaleDateString()返回日期对象日期部分的字符串2099/9/20
toLocaleTimeString()返回日期对象时间部分的字符串18:30:43
<body>
  <div class="box"></div>
  <script>

    const date = new Date()
    console.log(date.toLocaleString())  // 2023/1/27 23:19:20
    console.log(date.toLocaleDateString())  // 2023/1/27 
    console.log(date.toLocaleTimeString())  // 23:19:20

    // 1. 封装一个 getDateTime函数,里面格式化时间对象
    function getDateTime() {
      const date = new Date()

      return date.toLocaleString()
    }
    // 注意: 先写上这句话,防止盒子有1秒的空白期
    document.querySelector('.box').innerText = getDateTime()
    // 3. 显示到box盒子里面,并且添加定时器
    setInterval(function () {
      document.querySelector('.box').innerText = getDateTime()
    }, 1000)
  </script>
</body>

时间戳

什么是时间戳:

  • 是指1970年01月01日00时00分00秒起至现在的总毫秒数(数字型),它是一种特殊的计量时间的方式

使用场景: 计算倒计时效果,需要借助于时间戳完成

算法:

  • 将来的时间戳 - 现在的时间戳 = 剩余时间毫秒数
  • 剩余时间毫秒数转换为年月日时分秒就是倒计时时间
    // 1. 实例化
  const date = new Date()
  // 2. 获取时间戳
  console.log(date.getTime())
// 还有一种获取时间戳的方法
  console.log(+new Date())
  // 还有一种获取时间戳的方法
  console.log(Date.now())

获取时间戳的方法,分别为 getTime 和 Date.now 和 +new Date()

DOM 节点

DOM树:DOM 将 HTML文档以树状结构直观的表现出来,我们称之为 DOM 树 或者 节点树

节点(Node):是DOM树(节点树)中的单个点。包括文档本身、元素、文本以及注释都属于是节点。

  • 元素节点(重点)
    • 所有的标签 比如 body、 div
    • html 是根节点
  • 属性节点
    • 所有的属性 比如 href
  • 文本节点
    • 所有的文本

在这里插入图片描述

查找节点

利用节点关系查找节点,返回的都是对象

  • 父节点
  • 子节点
  • 兄弟节点

有了查找节点可以使我们选择元素更加方便

父节点

语法:

元素.parentNode
<body>
  <div class="pop">
    <a href="javascript:;" class="close"></a>
  </div>
  <script>
    // 点击关闭按钮可以关闭父盒子
    const closeBtn = document.querySelector('.close')
    // 利用孩子选取父节点,返回的也是一个元素对象
    console.log(closeBtn.parentNode)
    closeBtn.addEventListener('click', function () {
      this.parentNode.style.display = 'none'
    })
  </script>
</body>

子节点

语法:

父元素.children
<body>
  <ul>
    <li>我是第1个孩子</li>
    <li>我是第2个孩子</li>
    <li>我是第3个孩子</li>
    <li>我是第4个孩子</li>
  </ul>
  <script>
    // 1. 查询子节点
    const ul = document.querySelector('ul')
    console.log(ul.children)

    // 2. 查询兄弟节点
    const li2 = document.querySelector('ul li:nth-child(2)')
    // console.log(li2)
    console.log(li2.previousElementSibling) // 上一个兄弟
    console.log(li2.nextElementSibling)  // 下一个兄弟
    console.log(ul.children[0]) // 第一个孩子
    console.log(ul.children[2]) // 第三个孩子
  </script>
</body>

兄弟节点

<body>
  <ul>
    <li>我是第1个孩子</li>
    <li>我是第2个孩子</li>
    <li>我是第3个孩子</li>
    <li>我是第4个孩子</li>
  </ul>
  <script>
    // 2. 查询兄弟节点
    const li2 = document.querySelector('ul li:nth-child(2)')
    // console.log(li2)
    console.log(li2.previousElementSibling) // 上一个兄弟
    console.log(li2.nextElementSibling)  // 下一个兄弟
    console.log(ul.children[0]) // 第一个孩子
    console.log(ul.children[2]) // 第三个孩子
  </script>
</body>

增加节点

很多情况下,我们需要在页面中增加元素

  • 比如,点击发布按钮,可以新增一条信息

一般情况下,我们新增节点,按照如下操作:

  • 创建一个新的节点
  • 把创建的新的节点放入到指定的元素内部
  1. 父元素最后一个子节点之后,插入节点元素

    element.append()
    
  2. 父元素第一个子元素的之前,插入节点元素

    element.prepend()
    

如下代码演示:

<body>
  <ul>
    <li>我是小li</li>
  </ul>
  <script>
    // 1. 创建节点
    const li = document.createElement('li')
    li.innerHTML = '我是放到后面的'
    console.log(li)

    // 2. 追加给父元素
    const ul = document.querySelector('ul')
    // 2.1 append 放到ul 的最后面 类似css的 after伪元素
    ul.append(li)
    // 2.2 prepend放到 ul 的最前面 类似css的 before伪元素
    const firstli = document.createElement('li')
    firstli.innerHTML = '我是放到前面的'
    ul.prepend(firstli)
  </script>
</body>

删除节点

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

语法:

element.remove()
  1. 把对象从它所属的 DOM 树中删除
  2. 删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从DOM树中删除
<!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>删除节点</title>
  </head>

  <body>
    <div class="remove">我要删除</div>
    <div class="none">我要隐藏</div>
    <script>
      // 1. 删除节点, remove 会从dom树中删除这个元素
      const remove = document.querySelector('.remove')
      remove.remove()

      // 2. display:none 隐藏元素,页面看不见,但是dom树中还存在这个标签
      const none = document.querySelector('.none')
      none.style.display = 'none'
    </script>
  </body>

</html>

M端事件

M端(移动端)有自己独特的地方。比如触屏事件 touch(也称触摸事件),Android 和 IOS都有。

touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。

常见的触屏事件如下:

在这里插入图片描述

<body>
  <div class="box"></div>
  <script>
    // 触摸事件
    const box = document.querySelector('.box')
    // 1. 手指触屏开始事件 touchstart
    box.addEventListener('touchstart', function () {
      console.log('我开始摸了')
    })
    // 2. 手指触屏滑动事件 touchmove
    box.addEventListener('touchmove', function () {
      console.log('我一直摸')
    })

    // 3. 手指触屏结束事件  touchend
    box.addEventListener('touchend', function () {
      console.log('我摸完了')
    })
  </script>
</body>

JS插件

插件: 就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果

学习插件的思路:

1.看官网。了解这个插件可以完成什么需求 https://www.swiper.com.cn/

2.查看基本使用流程 。 https://www.swiper.com.cn/usage/index.html

3.写个小demo。看在线演示,找到符合自己需求的demo https://www.swiper.com.cn/demo/index.html

4.应用的开发中。

AlloyFinger

AlloyFinger 是腾讯 AlloyTeam 团队开源的超轻量级 Web 手势插件,为元素注册各种手势事件

github地址:https://github.com/AlloyTeam/AlloyFinger

使用步骤:

  1. 下载js库:http://alloyteam.github.io/AlloyFinger/alloy_finger.js
  2. 将AlloyFinger库引入当前文件:<scriptsrc=“alloy_finger.js”>

​ 或者使用在线地址:<script src=“https://unpkg.com/alloyfinger@0.1.16/alloy_finger.js”></script>

  1. 配置

    new AlloyFinger(element, {  // element 是给哪个元素做滑动事件
      swipe: function (e) {
        // 滑动的时候要做的事情 e.direction 可以判断上下左右滑动 Left  Right 等
      }
    })
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696493.html

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

相关文章

Verilog基础之十一、移位寄存器实现

目录 一、前言 二、工程设计 ​2.1 工程代码 2.2 综合结果 2.3 仿真结果 一、前言 移位寄存器SRL在工程中属于使用频率较高个模块&#xff0c;可用于存储数据&#xff0c;实现串并转换&#xff1b;根据数据移动方向可分为左移寄存器&#xff0c;右移寄存器&#xff0c;左移…

UDP 的报文结构和特点

一.UDP报文的结构 这是存在于各大教科书上的 其实我们应该这样来看更好理解,从上到下从左到右 源端口号:发送方地址 目的端口号:接收方地址 UDP长度:UDP报头UDP载荷, 2个字节64KB(固定不变),这是UDP能接受的最大内容 校验和:检测数据是否出错 二.UDP特点 1.无连接: 直到对方端…

如何将采购报价请求流程自动化?

在当今快节奏的商业环境中&#xff0c;效率和速度是保持竞争力的关键。在采购管理中&#xff0c;企业经常为简化操作而努力的一个领域是报价请求过程。手动处理请求、与供应商沟通并跟踪答复&#xff0c;可能非常耗时且容易出错。 然而&#xff0c;随着像8Manage SRM等专业电子…

外键导致的事务问题的解决方案

Exception分析 异常内容&#xff1a; com.zaxxer.hikari.pool.ProxyConnection : HikariPool-1 - Connection com.mysql.cj.jdbc.ConnectionImpl192ef0c0 marked as broken because of SQLSTATE(08S01), ErrorCode(0) com.mysql.cj.jdbc.exceptions.CommunicationsExceptio…

英雄大战恶棍 VoxEdit 大赛

准备好踏上超乎想像的史诗之旅了吗&#xff1f;号召所有的创作者、梦想家和有远见的人&#xff0c;在令人振奋的英雄大战恶棍 VoxEdit 大赛中展示他们的艺术才能&#xff01;准备好让你们最喜欢的英雄和卑鄙的恶棍以前所未有的方式变得栩栩如生吧&#xff01; 踏入 VoxEdit 的领…

win11中文家庭版下载补丁的方法远程连接

前置知识 参考链接&#xff1a;关于开启WINDOWS家庭版RDPwrap远程桌面报错解决办法&#xff08;如&#xff1a;not listening&#xff09; 0、怎么关闭Windows防火墙&#xff1f; 0、windows安全中心怎么关闭 正文 1、关闭防火墙 2、关闭windows安全中心 3、按照链接&…

【数据库】MySQL的主从复制模式

MySQL的主从复制模式包括异步复制&#xff0c;全同步复制&#xff0c;半同步复制。MySQL默认为异步模式。MySQL5.7引入了一种新的半同步方案&#xff0c;并且在5.7引入了一个新的参数&#xff0c;rpl_semi_sync_master_wait_point&#xff0c;这个参数有两种取值&#xff0c;1&…

Zookeeper:什么是Zookeeper? ①

一、Zookeeper是什么 Zookeeper是一个开源的分布式协调服务框架&#xff0c;它是一个为分布式应用提供一致性服务的软件。 Zookeeper致力于提供一个高性能、高可用&#xff0c;且具备严格的顺序访问控制能力的分布式协调服务&#xff0c;是雅虎公司创建&#xff0c;是G…

Linux更新Firefox 52后突然没声音了?

如果你是一名 Linux 用户&#xff0c;将 Firefox 浏览器升级到了最新的 v52&#xff0c;却发现浏览器不再能播放声音了&#xff0c;你不是唯一遇到这个问题&#xff08;http://www.omgubuntu.co.uk/2017/03/firefox-52-no-sound-pulseaudio-alsa-linux?_utm_source1-2-2&#…

产品的0到1怎么做的?(一)

要想做好产品&#xff0c;不是学一下Axure和墨刀就可以做产品了&#xff0c;那只是术的冰山一解&#xff0c;要想做好产品首先要从道、法、器三维度展开&#xff0c;下面从道方向展开&#xff0c;分想自己的一点心得&#xff1a;道可以道&#xff0c;非常道&#xff0c;产品的道…

NR PDCP(一) overview

这篇开始理下NR PDCP的内容&#xff0c;上图是38.300有关PDCP的服务和功能概括截图。PDCP功能包括对user plane或control plane data的传输&#xff1b;维护PDCP SN&#xff1b;使用ROHC和EHC协议进行header压缩和解压缩&#xff1b;加密(防止窃听)和解密&#xff1b;完整性保护…

2、Redis7 十大数据类型(一)

命令官网 英文版&#xff1a;https://redis.io/commands/ 中文版&#xff1a;http://redis.cn/commands.html/ 1.1 类型说明 1.2 Key命令 命令不区分大小写&#xff0c;但是key区分 命令 说明 keys * //展示当前库的所有key exists key //判断某…

解决Word编号与标签之间间隙过大的问题

前言 今天在写文档时发现&#xff0c;当给标题设置中文编号&#xff08;一、二、三…&#xff09;后&#xff0c;编号与文字之间会产生一个非常大的间隙&#xff0c;使用的字体是“思源黑体M”&#xff0c;更换其他字体后依然如此&#xff0c;很不美观&#xff08;如图所示&am…

(二十二)数据符号化——矢量数据符号化②

数据符号化——矢量数据符号化② 目录 数据符号化——矢量数据符号化② 3.统计符号设置4.组合符号设置 3.统计符号设置 在 ArcMap 中可以使用符号系统来设置和定制地图元素的样式、颜色和标注。其中&#xff0c;统计符号可以用于表示一个或多个统计值的分布情况和趋势。 这是…

数据结构第六章 图 6.1-6.3 错题整理

6.1 6.C 加上一个点实现非连通 去除每个边都是一颗不同的生成树 一共n条边 13.C n个顶点、e条边的无向图&#xff0c;森林。树的角度看&#xff0c;除了根节点没有一条边与其对应&#xff0c;其他顶点都对应一条边&#xff0c;用顶点-边得出有多少颗树 14.A II 等于 也可以…

Git 分布式版本控制

Git概述 Git是分布式版本控制系统&#xff0c;可以快速高效地处理各种项目。具有廉价的本地库&#xff0c;方便的暂存区和多个工作流分支等特性。 版本控制目的&#xff1a;个人开发过渡到团队协作 分布式版本控制系统的优点&#xff1a; 1、服务器断网的情况下也可以…

DELL戴尔笔记本电脑Dell G5 15 5587原厂Win10系统镜像,原装OEM预装专用系统,恢复出厂状态

dell戴尔笔记本电脑&#xff0c;Dell G5 15 5587原厂Windows10系统镜像,原装OEM预装专用系统,恢复出厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件等预装程序 链接&#xff1a;https://pan.baidu.com/s/1Av93lwhHR16SRGJAf__NAg?pwdkqkc 提取码&#xff1a;kq…

maven官网下载,中央仓库官网,搜索官网

maven 官网 https://maven.apache.org/ maven 下载 https://maven.apache.org/ maven 各版本下载 maven中央仓库 https://repo.maven.apache.org/maven2/ maven 搜索jar文件版本 https://mvnrepository.com/ 阿里镜像官网&#xff0c; https://developer.aliyun.com/mirro…

iPhone手机如何添加桌面便签软件小组件?

iPhone手机的小组件功能受到了很多用户的喜爱&#xff0c;它可以让用户更加快捷的查看到APP里面的部分相关内容。这项功能和便签软件结合起来之后&#xff0c;甚至能产生1加1大于二的效果。那么iPhone手机如何添加桌面便签软件小组件呢&#xff1f;以iPhone手机端敬业签桌面便签…

Day 56 kMeans 聚类

代码&#xff1a; package dl;import java.io.FileReader; import java.util.Arrays; import java.util.Random; import weka.core.Instances;/*** kMeans clustering.*/ public class kMeans {/*** Manhattan distance.*/public static final int MANHATTAN 0;/*** Euclidea…