当前位置: 首页 > news >正文

JS-学生管理系统(功能实现)

基础知识点掌握:

1.DOM节点

首先DOM树当做一颗到着生长的树,DOM树里面的每一个内容称为节点

节点类型:

  • 属性节点
  • 元素节点
  • 文本节点
  • 其他

2.查找节点:

查找节点分为3个类型:

  • 父节点
  • 子节点
  • 兄弟节点
(1)父节点使用   parentNode 属性

使用模板 :子元素.parentNode

<div class="one"><div class="two">我是one的儿子</div></div><script>//查找节点const two = document.querySelector('.two')console.log(two.parentNode)</script>
(2)子节点使用    children属性

使用模板:父元素.children (注意:得到的是一个伪数组,选择的是亲儿子)

<div class="students"><p class="one">1</p><p class="one">2</p><p class="one">3</p><p class="one">4</p><p class="one">5</p></div><script>// 子节点的使用 childNodes(可以获取所有子节点包括文本空格换行注释等) 或 children(仅获取所有元素节点,返回的还有一个伪数组)const div = document.querySelector('div')console.log('div.children') //得到的是伪数组,选择的是亲儿子</script> 
(3)兄弟节点使用 :

        下一个兄弟节点  nextElementSibing 属性

        上一个兄弟节点  previousElementSibing 属性

使用模板:同级元素.nextElementSibing    或   同级元素.previousElementSibing 

 <div class="students"><p class="one">1</p><p class="one">2</p><p class="one">3</p><p class="one">4</p><p class="one">5</p></div><script>//兄弟关系查找//1.下一个兄弟节点  nextElementSibing 属性//2.上一个兄弟节点  previousElementSibing 属性const one2 = document.querySelector('div p:nth-child(2)')console.log(one2.previousElementSibling)  //上一个兄弟console.log(one2.nextElementSibling)      //下一个兄弟</script>

3.增加节点:很多时候我们需要使用到增加节点的功能,比如给一个视频进行评论

            其中分为2个步骤:1)创建一个新的节点(docmennt.createElement('标签名')

const li = document.createElement('li')

                                        2)追加节点

                                (插入到父元素里面的最后:父元素:appendchild(要插入的元素))

ul.appendchild(li)

                (插入到某个元素的前面:当前元素.insertBefore(需要插入元素,元素在哪个前面)

one.insertBefore(div,one.children[0])

整体代码:

<div class="one"><div></div><div></div></div><div class="two"></div><script>// 获取第一个divconst one = document.querySelector('.one')//1.创建一个新的节点const div = document.createElement('div')//2.追加接地单,插入到父元素的最后一个子元素div.innerHTML = '我是第一个div的儿子'// one.appendChild(div)//插入到某个元素的前面,使用   父元素.insertBefore(要插入的元素,哪一个元素之前)  one.insertBefore(div,one.children[0])</script>

4.克隆节点:将原有的节点复制放到指定位置

<ul><li>1</li><li>2</li><li>3</li></ul><script>//1.获得元素const ul = document.querySelector('ul')//2.克隆元素const li = ul.children[0].cloneNode(true)//3.追加节点ul.appendChild(li)</script>

5.删除节点:注意删除节点和隐藏节点是不一样的,隐藏节点,隐藏后它还是占用位置display:none

// 删除节点 父元素.removeChlid(子元素)const ul = document.querySelector('ul')ul.removeChild(ul.children[0])

学生管理系统管理页面实现(增加,删除)

<!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>// 获取所有带name属性的元素const item = document.querySelectorAll('[name]')// 创建数组const arr = []//获取元素 const uname = document.querySelector('.uname')const age = document.querySelector('.age')const gender = document.querySelector('.gender')const salary = document.querySelector('.salary')const city = document.querySelector('.city')const tbody = document.querySelector('tbody')// 表单提交事件const info = document.querySelector('.info')info.addEventListener('submit', function(e) {// 阻止表单默认跳转行为e.preventDefault()//  进行表单验证,如果不通过直接中断,不进行添加元素for(let i = 0;i <item.length; i++) {if(item[i].value === '') {return alert('输入内容不能为空')}}// 创建性的对象const obj = {stuId:arr.length+1,uname:uname.value,age:age.value,gender:gender.value,salary:salary.value,city:city.value}// 追加到数组里面arr.push(obj)// console.log(arr)// 清空表单this.reset()render()})// 渲染函数function render() {// 先清空tbody,把最新数组里面得到数据渲染完毕tbody.innerHTML = ''for(let i = 0 ;i < arr.length; i++) {// 生成trconst tr = document.createElement('tr')tr.innerHTML = `<td>${arr[i].stuId}</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>`// 追加元素tbody.appendChild(tr)}}// 数据删除tbody.addEventListener('click',function(e) {if(e.target.tagName === 'A') {// 使用自己定义属性data-idarr.splice(e.target.dataset.id,1)render()}})</script></body></html>

http://www.lryc.cn/news/459223.html

相关文章:

  • C# 屏幕录制工具
  • 前端开发攻略---前端ocr图片文字提取功能
  • 平凯星辰亮相 2024开放原子开源生态大会,分享开源教育及社区治理经验
  • OCR经典神经网络(二)文本检测算法DBNet算法原理及其在icdar15数据集上的应用
  • 论文笔记:Prompt-Based Meta-Learning For Few-shot Text Classification
  • 光耦知识分享 | AC晶体管光耦在照明控制领域的应用与选型推荐
  • RBTree(红黑树)的介绍和实现
  • 信息安全数学基础(30)指数及其基本性质
  • Android开发首页底部tab切换图标有动画效果
  • Web前端高级工程师培训:异步处理专题
  • ESP32-C3实现热点并在浏览器中输入域名访问网页
  • 基于Python的自然语言处理系列(32):spaCy属性扩展
  • STM32 输入捕获模式详解:PWM 输入捕获与 PWI 模式(续篇)
  • 【C++】set/map(重点解析)
  • 【算法篇】动态规划类(1)(笔记)
  • mysql学习教程,从入门到精通,SQL 约束(Constraints)(41)
  • 使用CSS3与JavaScript实现炫酷的3D旋转魔方及九宫格交换动效
  • springboot项目通过maven的profile功能实现通过不同文件夹的方式来组织不同环境配置文件
  • GAN(Generative Adversarial Nets)
  • linux下使用mpi求自然数和
  • WebGl学习使用attribute变量绘制一个水平移动的点
  • 机器学习四大框架详解及实战应用:PyTorch、TensorFlow、Keras、Scikit-learn
  • linux源码安装slurm以及mung和openssl
  • 分享蓝牙耳机A2DP音频卡顿原因及解决思路
  • Mac 下编译 libaom 源码教程
  • 【成品设计】基于Arduino平台的物联网智能灯
  • 安装和配置k8s可视化UI界面dashboard-1.20.6
  • VLAN:虚拟局域网
  • 利用可解释性技术增强制造质量预测模型
  • FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling