Web APIs

前言

理解节点(标签)的增删改查


日期对象

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

实例化

1.在代码中发现了 new 关键字时,一般将这个操作称为实例化
2.创建一个时间对象并获取时间

获得当前时间
在这里 获得当前时间插入图片描述
获得指定时间
在这里插入图片描述

时间对象方法

使用场景:因为日期对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式
在这里插入图片描述

时间戳

使用场景: 如果计算倒计时效果,前面方法无法直接计算,需要借助于时间戳完成
什么是时间戳:
是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式
算法
1.将来的时间戳 - 现在的时间戳 = 剩余时间毫秒数
2. 剩余时间毫秒数 转换为 剩余时间的 年月日时分秒 就是 倒计时时间
3.比如 将来时间戳 2000ms - 现在时间戳 1000ms = 1000ms
4.1000ms 转换为就是 0小时0分1秒

三种方式获取时间戳

1. 使用 getTime() 方法
在这里插入图片描述
2. 简写 +new Date()

在这里插入图片描述
3. 使用 Date.now()
1. 无需实例化
2. 但是只能得到当前的时间戳, 而前面两种可以返回指定时间的时间戳
在这里插入图片描述

节点操作

DOM 节点

DOM节点
DOM树里每一个内容都称之为节点
节点类型
在这里插入图片描述

1.元素节点
所有的标签 比如 body、 div
html 是根节点
2.属性节点
所有的属性 比如 href
3.文本节点
所有的文本
4. 其他

查找节点

节点关系

1.父节点
2.子节点
3.兄弟节点

父节点查找

parentNode 属性
返回最近一级的父节点 找不到返回为null
在这里插入图片描述

子节点查找

childNodes
获得所有子节点、包括文本节点(空格、换行)、注释节点等
children 属性
仅获得所有元素节点
返回的还是一个伪数组
在这里插入图片描述

兄弟关系查找

1. 下一个兄弟节点
nextElementSibling 属性
2. 上一个兄弟节点
previousElementSibling 属性

增加节点

1.创建节点
创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
创建元素节点方法:
在这里插入图片描述
2.追加节点
要想在界面看到,还得插入到某个父元素中

插入到父元素的最后一个子元素:
在这里插入图片描述

插入到父元素中某个子元素的前面在这里插入图片描述
3. 增加节点
特殊情况下,我们新增节点,按照如下操作:
1.复制一个原有的节点
2.把复制的节点放入到指定的元素内部
克隆节点
在这里插入图片描述
cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值

  1. 若为true,则代表克隆时会包含后代节点一起克隆
  2. 若为false,则代表克隆时不包含后代节点
  3. 默认为false

删除节点

若一个节点在页面中已不需要时,可以删除它
在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除
语法
在这里插入图片描述
注:

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

M端事件

移动端也有自己独特的地方。比如触屏事件 touch(也称触摸事件),Android 和 IOS 都有。
1.触屏事件 touch(也称触摸事件),Android 和 IOS 都有。
2.touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔
)对屏幕或者触控板操作。
3.常见的触屏事件如下:
在这里插入图片描述

案例

学生信息表

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>学生信息管理</title>
  <link rel="stylesheet" href="css/index.css" />
</head>

<body>
  <h1>新增学员</h1>
  <form class="info" autocomplete="off">
    姓名:<input type="text" class="uname" name="uname" />
    年龄:<input type="text" class="age" name="age" />
    性别:
    <select name="gender" class="gender">
      <option value=""></option>
      <option value=""></option>
    </select>
    薪资:<input type="text" class="salary" name="salary" />
    就业城市:<select name="city" class="city">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
      <option value="广州">广州</option>
      <option value="深圳">深圳</option>
      <option value="曹县">曹县</option>
    </select>
    <button class="add">录入</button>
  </form>

  <h1>就业榜</h1>
  <table>
    <thead>
      <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>薪资</th>
        <th>就业城市</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <!-- 
        <tr>
          <td>1001</td>
          <td>欧阳霸天</td>
          <td>19</td>
          <td>男</td>
          <td>15000</td>
          <td>上海</td>
          <td>
            <a href="javascript:">删除</a>
          </td>
        </tr> 
        -->
    </tbody>
  </table>


  <script>
    //  定义数组 用于保存用户数据
    const arr = []
    // 1. 获取到 表单标签 给表单注册 submit 事件
    const info = document.querySelector('.info')
    info.addEventListener('submit',function(e){
    //  2. 阻止表单默认行为
    e.preventDefault()
    //  获取对应的表单元素的value值
    const uname = document.querySelector('.uname').value.trim() //姓名
    const age = document.querySelector('.age').value.trim()  //年龄
    const gender = document.querySelector('.gender').value  // 性别
    const salary = document.querySelector('.salary').value.trim()  // 薪资
    const city = document.querySelector('.city').value.trim()  //  就业城市
    // console.log(uname,age,gender,salary,city)
    // 如果用户没有输入数据 则提示用户 并且代码在这里停止往下走
    if (uname.length === 0 || age.length === 0 || salary.length === 0) {
      return alert('请输入内容')
    }

    //  创建一个对象 保存一个用户数据
    // es6 对象有一个高级语法 属性名和属性值一样时 只需写一个
    const obj = {
       id: arr.length+1,
       uname,
       age,
       gender,
       salary,
       city,
    }
    // 用数组保存
    arr.push(obj)

    render()
    // 将表格重置 reset()
    this.reset()
    })

    // 根据数组 去渲染数据显示到表格中
    function render() {
      // 将 tbady 里面的内容清空
      document.querySelector('tbody').innerHTML = ''
      // 遍历数组
      for (let i = 0 ;i < arr.length ; i++) {
        // 创建tr标签
        const tr = document.createElement('tr')
        // 往tr里面写入对应的td
        tr.innerHTML = `
        <td>${arr[i].id}</td>
        <td>${arr[i].uname}</td>
        <td>${arr[i].age}</td>
        <td>${arr[i].gender}</td>
        <td>${arr[i].salary}</td>
        <td>${arr[i].city}</td>
        <td>
          <a href="javascript:;" data-id="${i}">删除</a>
          </td>
        `
        document.querySelector('tbody').appendChild(tr)
      }
    }

    // 获取tr标签 新增的元素想要绑定事件 只能用事件委托 
    document.querySelector('tbody').addEventListener('click',function(e) {
      if(e.target.tagName === 'A') {
        // 将 数组里面对应的元素删除
      if (window.confirm("是否确认删除")) {
        const id = e.target.dataset.id
        arr.splice(id,1)
        render()
      }
      }
    })
  </script>
</body>

</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值