【JS实战03】学生信息的添加与删除

news2024/11/26 18:41:05

说明:本文章提供相应源码,需要到主页资源栏下载,并搭配源码看本文档;重点阐述每个JS模块实现过程中的重难点问题。

一:录入模块

1 渲染数据思路

减少DOM相关操作,避免因过多的DOM操作造成程序运行速度的减慢;案例重点:将数据以对象的形式存放于数组中;并通过数组遍历方式,渲染相关数据,从而提高整个程序运行效率。

// 2 创建对象,获取表单元素的值,将其存储对象中
      const obj = {
        stuId: arr.length + 1,
        uname: uname.value,
        age: age.value,
        gender: gender.value,
        salary: salary.value,
        city: city.value
      }
// 3 并将对象push到数组中
arr.push(obj)

对象属性属性值的获取:获取表单元素值利用 (表单.value方式获取)

2 渲染数据步骤(重点)

function render() {
      //每次渲染前,将之前的数据进行清空
      tbody.innerHTML = ''
      for (let index = 0; index < arr.length; index++) {
        // const element = array[index];
        // 生成标签,将标签追加到父级元素中
        const tr = document.createElement('tr')
        tr.innerHTML = `
          <tr>
              <td>${arr[index].stuId}</td>
              <td>${arr[index].uname}</td>
              <td>${arr[index].age}</td>
              <td>${arr[index].gender}</td>
              <td>${arr[index].salary}</td>
              <td>${arr[index].city}</td>
              <td>
                <a href="javascript:" data-id = ${index}>删除</a>
              </td>
          </tr> 
      `
        tbody.appendChild(tr)//追加元素
      }
    }
  1. 创建标签:document.creatElement
  2. 解析结构:标签.innerHTML、模板字符串,解析要渲染的结构
  3. 追加元素:将解析完成的结构,追加到相应容器中;在页面显示

二:删除模块

JS代码

// 二:删除模块,利用事件委托
    tbody.addEventListener('click', function (e) {
      if (e.target.tagName === 'A') {
        // console.log(e.target.dataset.id);
        arr.splice(e.target.dataset.id, 1)
      }
      render()
})

 1 实现删除效果

案例难点是点击删除链接,如何在数组中找到该项记录并实现删除效果

利用:自定义属性方式

tr.innerHTML = `
 <tr>
    <td>
      <a href="javascript:" data-id = ${index}>删除</a>
    </td>
 </tr> `

每利用for循环渲染一条数据,就将数据中添加一个id序号;利用事件对象,e.target.dataset.id找到标号,利用数组方法splice()删除,找到数据并删除

三:完成非空判断

// 三:完成非空判断
      for (let index = 0; index < items.length; index++) {
        // const element = array[index];
        if (items[index].value === '') {
          this.reset()
          return alert('输入内容不能为空')
        }
      }

1 代码位置问题

非空判断指如果表单元素中有空,则不能添加数据;同时,由于html页面是从上往下依次解析的,因此将非空判断放置在数据对象创建前,避免内存的浪费;

2 return关键字

return关键字:结束当前循环

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

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

相关文章

机车 - 安驾培训记录

1&#xff0c;先学倒车后扶车。 先断电。脚蹬在外的话要展开&#xff0c;防止推过头。 可以挂档就挂到1档。可以用皮套把刹车拉紧&#xff0c;或手捏在刹车上。防止下坡溜车或扶起时车不稳。 站在车倒向的一侧&#xff0c;车把向内&#xff0c;方便一手抓车把&#xff0c;一…

【iOS】内存泄漏检查及原因分析

目录 为什么要检测内存泄漏&#xff1f;什么是内存泄漏&#xff1f;内存泄漏排查方法1. 使用Zombie Objects2. 静态分析3. 动态分析方法定位修改Leaks界面分析Call Tree的四个选项&#xff1a; 内存泄漏原因分析1. Leaked Memory&#xff1a;应用程序未引用的、不能再次使用或释…

CTFHUB-SQL注入-字符型注入

目录 查询数据库名 查询数据库中的表名 查询表中数据 总结 此题目和上一题相似&#xff0c;一个是整数型注入&#xff0c;一个是字符型注入。字符型注入就是注入字符串参数&#xff0c;判断回显是否存在注入漏洞。因为上一题使用手工注入查看题目 flag &#xff0c;这里就不…

基于微信小程序的社区志愿者服务平台 _8xh87【已测试】

前言&#xff1a;&#x1f469;‍&#x1f4bb; 计算机行业的同仁们&#xff0c;大家好&#xff01;作为专注于Java领域多年的开发者&#xff0c;我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源&#xff1a; &#x1f469;‍&#x1f4bb; SpringBoot…

轻松掌握系统概况,提升工作效率

作为 Linux 系统管理员,我们经常需要了解系统的基本状况,比如当前时间、系统版本、内核信息、CPU 型号、内存使用等等。但是每次手动执行各种命令来获取这些信息,无疑是一件非常繁琐的事情。 幸运的是,我们可以通过编写一个简单的 shell 脚本来一键获取这些系统信息。让我们一…

Linux用户和用户组的管理

目录 前言一、系统环境二、Linux用户组的管理2.1 新增用户组2.2 删除用户组2.3 修改用户组2.4 查看用户组 三、Linux用户的管理3.1 新增用户3.2 删除用户3.3 修改用户3.4 查看用户3.5 用户口令&#xff08;密码&#xff09;的管理 总结 前言 本篇文章介绍如何在Linux系统上实现…

Aethir: 破局算力瓶颈,构建AI时代去中心化云基础设施

科技的每一次飞跃都在重新塑造世界&#xff0c;而近年来&#xff0c;跨越式的技术革新再次引发了深刻的变革&#xff0c;那就是人工智能&#xff08;AI&#xff09;。 人工智能已然超越了此前的所有技术概念&#xff0c;成为了继互联网之后的下一个巨大浪潮。从自动驾驶汽车到…

ipv6有状态分配地址

RA报文M/O标志位 设备在获取IPv6地址等信息时&#xff0c;会先发送RS报文请求链路上的路由设备&#xff0c;路由设备受到RS报文后会发送相应的RA报文来表示自身能够提供的IPv6服务类型。 对于RA报文&#xff0c;根据其M字段和O字段确定其获取IPv6地址的模式&#xff1a; M/O都…

python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制

实现效果&#xff08;红框内&#xff09;&#xff1a; 后端api如下&#xff1a; task_api.route(/user/task/states_list, methods[POST, GET]) visitor_token_required def task_states(user):name_list [待接单, 设计中, 交付中, 已完成, 全部]data []color [#F04864, …

电脑缺失msvcp110.dll文件的解决方法,总结5种靠谱的方法

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“找不到msvcp110.dll”。这个错误提示通常出现在运行某些软件时&#xff0c;那么&#xff0c;它究竟会造成哪些问题呢&#xff1f; 一&#xff0c;msvcp110.dll文件概述 msvcp110.dll是Mic…

各种空气能热泵安装图

空气能热泵安装图 循环式空气能热泵安装图 直热循环式空气能热泵安装图 泳池空气能热泵安装图 循环式水源热泵热安装系统原理图 直热循环式水源热泵安装系统图 空气水源热泵安装图

sqli-labs 靶场 less-8、9、10 第八关到第十关详解:布尔注入,时间注入

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 8 SQLI DUMB SERIES-8判断注入点 当输入id为1时正常显示&#xff1a; 加上单引号就报错了 …

2024年【天津市安全员C证】免费试题及天津市安全员C证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员C证免费试题是安全生产模拟考试一点通生成的&#xff0c;天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材汇编出天津市安全员C证仿真模拟考试。2024年【天津市安全员C证】免费试题及天津市…

【云原生】基于windows环境搭建Docker

目录 一、Docker Desktop搭建 二、前置准备 2.1开启 Hyper-V 2.2 Hyper-V选项看不到问题解决 2.3 开启或升级wsl 三、安装过程 3.1 下载安装包 3.2 安装 Docker Desktop 3.2.1 Docker 图标一直处于starting状态问题解决 3.3 配置仓库与镜像 3.4 docker功能测试 四、…

coap-emqx:使用libcoap与emqx通信

# emqx开启CoAP网关 请参考【https://blog.csdn.net/chenhz2284/article/details/139562749?spm1001.2014.3001.5502】 # 写一个emqx的客户端程序&#xff0c;不断地往topic【server/1】发消息 【pom.xml】 <dependency><groupId>org.springframework.boot<…

配置免密登录秘钥报错

移除秘钥&#xff0c;执行 ssh-keygen -R cdh2即可 参考&#xff1a;ECDSA主机密钥已更改,您已请求严格检查。 - 简书

【C语言】宏详解(上卷)

前言 紧接着预处理详解&#xff08;上卷&#xff09;&#xff0c;接下来我们来讲宏&#xff08;隶属于预处理详解系列&#xff09;。 #define定义宏 #define机制包括了一个规定&#xff0c;允许把参数替换到文本中&#xff0c;这种实现通常称为宏&#xff08;macro&#xff…

步态控制之足旋转点(Foot Rotation Indicator, FRI)

足旋转点(Foot Rotation Indicator, FRI) 足旋转点是人形机器人步态规划中的一个关键概念,用于描述步态过程中机器人脚部的旋转和稳定性。FRI 可以帮助确定机器人在行走时是否稳定,以及如何调整步态以保持稳定。下面详细介绍FRI的原理,并举例说明其应用。 足旋转点(FRI…

Word多级标题编号不连续、一级标题用大写数字二级以下用阿拉伯数字

Word多级标题编号不连续 &#xff1a; 一级标题用大写数字二级以下用阿拉伯数字&#xff1a;

Qt Designer 生成的 .ui 文件转为 .py 文件并运行

1. 使用使用 PyUIC将 .ui 转 .py &#xff08;1&#xff09;打开命令行终端&#xff08;可以用cmd&#xff0c;或pycharm 下面的 Terminal&#xff09;。 &#xff08;2&#xff09;导航到包含.ui文件的目录。 cd 你的ui文件路径 &#xff08;3&#xff09;运行以下命令来…