Javascript的API基本内容(四)

news2024/11/15 15:41:31

一、日期对象

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

  // 1. 实例化
  const date = new Date()
  // 2. 获取时间戳
  console.log(date.getTime())
// 还有一种获取时间戳的方法
  console.log(+new Date())
  // 还有一种获取时间戳的方法
  console.log(Date.now())

二、DOM 节点

DOM节点的类型

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

 (1)查找父节点

parentNode 属性,返回最近一级的父节点 找不到返回为null

(2)查找子节点

childNodes:获得所有子节点、包括文本节点(空格、换行)、注释节点等
children 属性 (重点)

  • 仅获得所有元素节点
  • 返回的还是一个伪数组

 

 (3)查找兄弟结点

下一个兄弟节点:nextElementSibling 属性
上一个兄弟节点:previousElementSibling 属性

(4)插入(增加)节点

a:.创建节点

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

 b:追加节点

要想在界面看到,还得插入到某个父元素中,插入到父元素的最后一个子元素:

 

 插入到父元素中某个子元素的前面

 (5)删除节点

若一个节点在页面中已不需要时,可以删除它
l 在 JavaScript 原生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>
  <style>
    .box {
      margin: 0 auto;
      text-align: center;
    }
    .box .formbox {
      width: 1000px;
      height: 80px;
      line-height: 80px;
      margin: 0 auto;
    }
    input {
      width: 100px;
      margin-right: 20px;
    }
    select {
      margin-right: 20px;
      width: 80px;
    }
    button {
      background-color: rgb(57, 57, 97);
      color: aliceblue;
      width: 80px;
    }
    .tablebox {
      width: 800px;
      margin: 0 auto;
    }
    table {
      border-collapse: collapse;
    }
    th {
      width: 111px;
      padding: 10px;
      background: #cfe5ff;

      font-size: 20px;
      font-weight: 400;
    }
    td,
    th {
      border: 1px solid #b8daff;
    }
    td {
      padding: 10px;
      color: #666;
      text-align: center;
      font-size: 16px;
    }
    tbody tr {
      background: #fff;
    }
    .delete {
      border: 0;
      width: 40px;
      background-color: #fff;
      color: rgb(24, 21, 21);
      border-bottom: 1px solid rgb(102, 137, 240);
    }
  </style>
  <body>
    <div class="box">
      <h1>学生注册信息表</h1>
      <div class="formbox">
        <form action="#">
          姓名:<input class="name" name="name" /> 年龄:<input
            class="age"
            name="age"
          />
          性别:<select class="sex" name="sex">
            <option value="男">男</option>
            <option value="女">女</option>
          </select>
          班级:<input class="banji" name="banji" /> 城市:<select
            class="city"
            name="city"
          >
            <option>北京</option>
            <option>上海</option>
            <option>广州</option>
            <option>深圳</option>
          </select>
          <button class="luru">录入</button>
        </form>
      </div>
      <h2>信息榜</h2>
      <div class="tablebox">
        <table>
          <thead>
            <th>学号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>班级</th>
            <th>城市</th>
            <th>操作</th>
          </thead>
          <tbody></tbody>
        </table>
      </div>
    </div>
    <script>
      const name = document.querySelector(".name");
      const age = document.querySelector(".age");
      const sex = document.querySelector(".sex");
      const city = document.querySelector(".city");
      const banji = document.querySelector(".banji");
      const tbody = document.querySelector("tbody");
      const arr = [];
      const btn = document.querySelector(".luru");
      // 获取所有带有name属性的 元素
      const items = document.querySelectorAll("[name]");
      btn.addEventListener("click", function (e) {
        // 阻止默认行为  不跳转
        e.preventDefault();
        for (let i = 0; i < items.length; i++) {
          if (items[i].value == "") {
            return alert("输入不能为空");
          }
        }
        let obj = {
          id: arr.length + 1,
          name: name.value,
          age: age.value,
          sex: sex.value,
          banji: banji.value,
          city: city.value,
        };
        arr.push(obj);
        render();
      });
      // 点击录入时调用的函数
      function render() {
        // 先清空tbody 以前的行 ,把最新数组里面的数据渲染完毕
        tbody.innerHTML = "";
        for (let j = 0; j < arr.length; j++) {
          let node = document.createElement("tr");
          node.innerHTML = `
          <td>${arr[j].id}</td>
          <td>${arr[j].name}</td>
          <td>${arr[j].age}</td>
          <td>${arr[j].sex}</td>
          <td>${arr[j].banji}</td>
          <td>${arr[j].city}</td>
          <td><a class="delete" data-id=${j}>删除</a></td>
          
          `;
          // 追加元素  父元素.appendChild(子元素)
          tbody.appendChild(node);
        }
      }
      tbody.addEventListener("click", function (e) {
        console.log(e.target.tagName);
        if (e.target.tagName == "A") {
          arr.splice(e.target.dataset.id, 1);
        }
        render();
      });
    </script>
  </body>
</html>

 

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

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

相关文章

maven进阶总结

maven进阶总结1. maven之间可以互相导包2. maven的依赖是具有传递性的3. 可选依赖和排除依赖&#xff1a;4. 继承与聚合4.1聚合4.2 继承5. 属性的配置与使用6. 版本管理8. 多环境开发和跳过测试&#xff08;了解&#xff09;1. maven之间可以互相导包 从当前maven的pom文件中&…

DNS服务器部署的详细操作(图文版)

DNS服务器的部署 打开虚拟机后查看已经开放的端口&#xff0c;可以看到没有TCP53、UDP53&#xff0c;说明DNS服务端口没有打开 打开我的电脑—双击CD驱动器— 选择安装可选的Windows组件 选择网络服务—域名系统&#xff08;DNS&#xff09;— 点击下一步后会弹出如下弹…

Kubernetes08:Controller (有状态应用)

Kubernetes08&#xff1a;Controller 1、无状态和有状态的区别 1&#xff09;无状态&#xff1a; 认为Pod都是相同的没有顺序要求不用考虑我在哪个node上运行随意进行伸缩和扩展 有状态&#xff1a; 上面的因素都需要考虑到让每个Pod都是独立的&#xff0c;保持Pod启动顺序…

mysql去重查询的三种方法

文章目录前言一、插入测试数据二、剔除重复数据方法1.方法一&#xff1a;使用distinct2.方法二&#xff1a;使用group by3.方法三&#xff1a;使用开窗函数总结前言 数据库生成环境中经常会遇到表中有重复的数据&#xff0c;或者进行关联过程中产生重复数据&#xff0c;下面介…

【API网关】Kong安装和基本操作

文章目录前言一、API网关选型和Kong的安装1. 什么是API网关2. API网关技术选型3. 安装postgresql和migrations4. 安装kong5. 安装konga二、基本的路由转发配置1. kong的8001、8000和1337端口号的关系2. 基本的路由转发配置3. kong集成consul实现服务发现和负载均衡4. kong配置j…

程序员推荐的良心网站合集!

今天来给大家推荐几个程序员必看的国外良心网站合集。 IBM developer 技术性很强的博客网站&#xff0c;网站自带真实示例代码和架构解决方案&#xff0c;大家可以在上面找到适合自己的语言方向开始学习交流。 https://developer.ibm.com/ infoq 技术论坛社区&#xff0c;内…

【JavaScript】根据元素内容遍历元素的方案

▒ 目录 ▒&#x1f6eb; 导读需求1️⃣ jQuery2️⃣ XPATH&#xff08;document.evaluate&#xff09;3️⃣ 原生js&#xff08;querySelectorAll & Array&#xff09;&#x1f6ec; 文章小结&#x1f4d6; 参考资料&#x1f6eb; 导读 需求 因业务需要&#xff0c;根据元…

文献阅读笔记 # 面向大规模多版本软件系统的代码克隆检测加速技术

面向大规模多版本软件系统的代码克隆检测加速技术&#xff0c;方维康 吴毅坚 赵文耘&#xff0c;《计算机应用与软件》复旦大学软件学院、复旦大学上海市数据科学重点实验室2022 April 面向大规模多版本软件系统的代码克隆检测加速技术 摘要 很多代码克隆检测方法主要针对软…

_Linux (网络版计算器简易实现)

文章目录1. 协议2. 网络版计算器简易实现代码链接3. 网络版计算器2-1. 约定的协议方案有两种2-3. 协议代码框架1. 自定义的协议方案2. json(库里的完整协议方案&#xff09;2-4. send和recv单独使用不安全2-5. 剩余代码写法讲解参考如下&#xff1a;2-6. 代码运行结果示意图&am…

9.5 PIM-SM

实验目的 熟悉PIM-SM的应用场景掌握PIM-SM的配置方法 实验拓扑 实验拓扑如图9-40所示&#xff1a; 图9-40&#xff1a;PIM-SM 实验步骤 &#xff08;1&#xff09;配置IP地址 MCS1的配置 MCS1的配置如图9-41所示&#xff1a; 图9-41&#xff1a;配置MCS1的IP地址 R1的配置 …

VMware安装FreeBSD虚拟机

1. 下载FreeBSD镜像地址 国内阿里云下载地址&#xff1a; freebsd-releases-ISO-IMAGES安装包下载_开源镜像站-阿里云 选择自己需要的版本下载。 2. 创建FreeBSD虚拟机 2.1. 选择操作系统类型 2.2. 导入FreeBSD镜像 3. 安装FreeBSD 第1步&#xff1a;保持默认让其自动进入…

复习知识点十之方法的重载

目录 方法的重载 练习1: 练习1: 数组遍历 练习2: 数组的最大值 练习3: 练习4: 复制数组 基本数据类型和引用数据类型 方法的重载 Java虚拟机会通过参数的不同来区分同名的方法 练习1: public class Test4 {public static void main(String[] args) {//调用方法 // …

grid宫格布局新手快捷上手-f

前言 grid 网上有很多&#xff0c;但都是大而全的&#xff0c;感觉新人上手很吃力&#xff0c;本文仅以最快捷的方式进行介绍&#xff0c;如何使用grid宫格布局 本文是新人上手&#xff0c;若想了解更多grid布局&#xff0c;请阅读其他文章 使用 声明布局 display: grid;声…

springboot+pgbouncer+postgres数据库连接池集成方案及问题解决

期望通过每一次分享&#xff0c;让技术的门槛变低&#xff0c;落地更容易。 —— around 前言 旨在解决微服务项目全是连接池并影响数据库并发连接&#xff0c;作者的环境是基于sprongboot微服务连接postgres数据库&#xff0c;每个微服务的DAO层配置都使用了连接池技术。后续…

一个线程两次调用start()方法会出现什么情况?

第17讲 | 一个线程两次调用start()方法会出现什么情况&#xff1f; 今天我们来深入聊聊线程&#xff0c;相信大家对于线程这个概念都不陌生&#xff0c;它是 Java 并发的基础元素&#xff0c;理解、操纵、诊断线程是 Java 工程师的必修课&#xff0c;但是你真的掌握线程了吗&am…

如何编程实现从多数据库操作数据

对于数据量很大的复杂系统&#xff0c;有时候会采用分库或者分表的减轻单台数据库服务器压力&#xff0c;截止目前有一些工具直接支持读写分离等&#xff0c;例如ShardingSphere&#xff0c;如果不采用工具框架&#xff0c;从编码出发&#xff0c;如何实现从多个数据库读写数据…

FFmpeg 中的多线程解码

1.共享变量的互斥互斥锁&#xff08;mutex-lock&#xff09;是一种信号量&#xff0c;用来防止两个线程在同一时刻访问相同的共享资源&#xff0c;它有锁定状态和非锁定状态。在任意时刻&#xff0c;一个线程要想存取共享数据&#xff0c;线程必须首先获得mutex-lock&#xff0…

一种全新的图像变换理论的实验(四)——研究目的替代DCT和小波

一、前言 2023年02月28日凌晨1点 以前我定义为这个算法是滤波算法&#xff0c;实则上应该算是一种新变换算法&#xff0c;比如傅里叶变换&#xff08;FFT&#xff09;、离散余弦变换&#xff08;DCT&#xff09;&#xff0c;以及小波变换。所以就把所有的标题改变了一下。 本次…

MySQL的InnoDB 三种行锁,SQL 语句加了哪些锁?

InnoDB 三种行锁&#xff1a; Record Lock&#xff08;记录锁&#xff09;&#xff1a;锁住某一行记录 Gap Lock&#xff08;间隙锁&#xff09;&#xff1a;锁住一段左开右开的区间 Next-key Lock&#xff08;临键锁&#xff09;&#xff1a;锁住一段左开右闭的区间 哪些语句…

前端面试题 —— HTML

目录 一、src 和 href 的区别 二、对 HTML 语义化的理解 三、DOCTYPE(⽂档类型) 的作⽤ 四、script 标签中 defer 和 async 的区别 五、常⽤的 meta 标签有哪些&#xff1f; 六、HTML5 有哪些更新 八、行内元素有哪些&#xff1f;块级元素有哪些&#xff1f; 空(void)元素…