Js渲染学生信息代码分析

分析思考:

准备好后端的数组数据

       1.先获取父元素tbody、表单元素 和录入按钮

        2.封装函数render()渲染。

                因为我们用的是追加渲染,所以函数要先清空tbody的tr内容。

                然后根据数据的条数来渲染增加tr,使用for 循环。

                创建tr,tr里放内容 tr.innerHTML = ``

                把tr 追加给tbody。tbody.appendChild(tr)

                页面加载调用函数。

        3.获取录入按钮add

                注册事件 click

                每点一次录入,就把录入的信息用push方法追加到arr数组里,

                然后调用render()函数

                然后复原表单

        4.删除操作. 用事件委托

                给父级tbody注册事件click

                给删除按钮a标签添加id号 id="${i}"

                判断:如果e.target.tagName === 'A', 则删除这个id所在的数据arr.splice(e.target.id, 1)

                删除后重新渲染调用函数 render()

代码:

<!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>Document</title>
  <link rel="stylesheet" href="css/user.css">
</head>

<body>
  <h1>新增学员</h1>
  <div class="info">
    姓名:<input type="text" class="uname">
    年龄:<input type="text" class="age">
    性别: <select name="gender" id="" class="gender">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
    <!-- 学号:<input type="text" class="stuId"> -->
    薪资:<input type="text" class="salary">
    就业城市:<select name="city" id="" class="city">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
      <option value="广州">广州</option>
      <option value="深圳">深圳</option>
      <option value="曹县">曹县</option>

    </select>
    <button class="add">录入</button>
  </div>

  <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>
    //  1. 准备好数据后端的数据
    let arr = [
      { stuId: 1001, uname: '欧阳霸天', age: 19, gender: '男', salary: '20000', city: '上海' },
      { stuId: 1002, uname: '令狐霸天', age: 29, gender: '男', salary: '30000', city: '北京' },
      { stuId: 1003, uname: '诸葛霸天', age: 39, gender: '男', salary: '2000', city: '北京' },
    ]

    // 1.获取父元素tbody
    let tbody = document.querySelector('tbody')
    let add = document.querySelector('.add')
    // 获取各个表单的元素
    let uname = document.querySelector('.uname')
    let age = document.querySelector('.age')
    let gender = document.querySelector('.gender')
    let salary = document.querySelector('.salary')
    let city = document.querySelector('.city')



    // 2.渲染函数 把数组里面的数据渲染到页面中
    function render() {
      // 先干掉以前的 让tbody 里面原来的tr 都没有
      tbody.innerHTML = ''

      // 再渲染新的数据

      // 根据数据的条数来渲染增加tr
      for (let i = 0; i < arr.length; i ++) {
        // 1.创建tr
        let tr = document.createElement('tr')
        // 2.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:" id="${i}">删除</a>
          </td>
          
        `
        // 3.把tr追加给tbody 父元素.appendChild(子元素)
        tbody.appendChild(tr)
        
        
      }
      
    }
    // 页面加载就调用函数
    render()

    // 3.添加数据按钮 获取录入按钮add
  
    add.addEventListener('click', function() {
      // alert(11)
      // 获得表单里面的值  之后追加给 数组arr 用push方法
      arr.push({
        // 得到数组最后一条数据的学号 1003+1
        stuId: arr[arr.length - 1].stuId + 1, 
        uname: uname.value, 
        age: +age.value, 
        gender: gender.value, 
        salary: salary.value, 
        city: city.value,
      })
      // console.log(arr)
      // 再次调用render函数 点了录入后渲染这个函数
      render()

      // 复原所有的表单数据
      uname.value = age.value = salary.value = ''
      gender.value = '男'
      city.value = '北京'
    })



    // 4.删除操作,删除的是数组里面的数据,但是我们用事件委托
    tbody.addEventListener('click', function (e) {
      // alert(11)
      // 我们只能点击了链接a,才会执行删除操作
      // 那我们怎么知道我们点击了a呢
      // 我们只能点击了链接才能做删除操作
      // console.log(e.target.tagName) .  'A'
      if (e.target.tagName === 'A') {
        // alert('你点击了链接')
        // 删除操作 删除数组里面的数据  arr.splice(从哪里开始删,删几个)
        // 我要得到a的id号,需要
        // console.log(e.target.id)
        arr.splice(e.target.id, 1)
        // 删除之后重新渲染
        render()

      }

    })
  </script>
</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的学生信息管理系统网页版的代码示例,使用HTML、CSS和JavaScript编写: HTML代码: ``` <!DOCTYPE html> <html> <head> <title>学生信息管理系统</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <header> <h1>学生信息管理系统</h1> </header> <main> <div id="form-container"> <h2>添加学生信息</h2> <form id="student-form"> <label for="name">姓名:</label> <input type="text" id="name" name="name" required><br> <label for="id">学号:</label> <input type="text" id="id" name="id" required><br> <label for="major">专业:</label> <input type="text" id="major" name="major" required><br> <label for="grade">年级:</label> <input type="text" id="grade" name="grade" required><br> <button type="submit">添加</button> </form> </div> <div id="table-container"> <h2>学生信息列表</h2> <table id="student-table"> <thead> <tr> <th>姓名</th> <th>学号</th> <th>专业</th> <th>年级</th> <th>操作</th> </tr> </thead> <tbody> <!-- 这里用JavaScript动态生成表格行 --> </tbody> </table> </div> </main> <script src="script.js"></script> </body> </html> ``` CSS代码: ``` body { font-family: Arial, sans-serif; margin: 0; padding: 0; } header { background-color: #333; color: #fff; text-align: center; padding: 20px; } main { display: flex; flex-direction: column; align-items: center; padding: 20px; } #form-container { margin-bottom: 20px; } h2 { margin-top: 0; } form { display: flex; flex-direction: column; } label { margin-top: 10px; } input[type="text"] { padding: 5px; border-radius: 5px; border: none; margin-bottom: 10px; } button[type="submit"] { background-color: #333; color: #fff; padding: 5px 10px; border-radius: 5px; border: none; cursor: pointer; } button[type="submit"]:hover { background-color: #666; } table { border-collapse: collapse; } thead { background-color: #333; color: #fff; } th, td { padding: 10px; border: solid 1px #ccc; } td:last-child { text-align: center; } td:last-child button { background-color: #333; color: #fff; padding: 5px 10px; border-radius: 5px; border: none; cursor: pointer; } td:last-child button:hover { background-color: #666; } ``` JavaScript代码: ``` // 这里用一个数组来保存学生信息 var students = []; // 获取表单和表格 var form = document.getElementById("student-form"); var table = document.getElementById("student-table"); // 给表单添加提交事件 form.addEventListener("submit", function(e) { // 阻止表单默认提交行为 e.preventDefault(); // 获取表单输入的值 var name = document.getElementById("name").value; var id = document.getElementById("id").value; var major = document.getElementById("major").value; var grade = document.getElementById("grade").value; // 将输入的值保存到数组中 students.push({ name: name, id: id, major: major, grade: grade }); // 清空表单 form.reset(); // 渲染表格 renderTable(); }); // 渲染表格 function renderTable() { // 先清空表格内容 table.getElementsByTagName("tbody")[0].innerHTML = ""; // 循环遍历数组,逐个添加表格行 for (var i = 0; i < students.length; i++) { var row = table.insertRow(-1); row.insertCell(0).innerHTML = students[i].name; row.insertCell(1).innerHTML = students[i].id; row.insertCell(2).innerHTML = students[i].major; row.insertCell(3).innerHTML = students[i].grade; // 在每行最后一列添加一个删除按钮 var deleteButton = document.createElement("button"); deleteButton.innerHTML = "删除"; deleteButton.addEventListener("click", function() { // 获取当前行的索引 var index = this.parentNode.parentNode.rowIndex - 1; // 从数组中删除该学生信息 students.splice(index, 1); // 重新渲染表格 renderTable(); }); row.insertCell(4).appendChild(deleteButton); } } // 页面加载完毕后,渲染一次表格 window.addEventListener("load", function() { renderTable(); }); ``` 这个示例实现了一个简单的学生信息管理系统,包括添加学生信息和删除学生信息两个功能。你可以根据自己的需求修改和扩展这个代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值