获取输入框的值添加到表格中并且实现删除表格内容的功能

思路:采用字符串拼接的方式,将数组中对象添加到表格中。

实现获取输入框的内容添加到表格中的效果:首先定义一个空数组用来存放数据对象。接着执行事件三要素(获取事件源、注册事件,事件的执行过程)。简单的可以理解为把获取的元素值封装成对象放到数组中,然后调用封装好的loadList()函数遍历数组中的每个元素将其采用字符串拼接的方式放到tbody中即可。(注:若想使每次添加完输入框为方便下次输入,只需将输入框的值等于空)

实现删除表格内容的效果:在封装好的函数loadList()中添加一个删除按钮,并为其绑定一个onclick点击事件,点击按钮就会调用删除函数,函数中的实参就是使用${" "} 来进行拼接的一个字符串,字符串的内容是要删除对象的序号,点击按钮时就会执行删除函数。(注:删除是根据添加的序号来进行的,所以添加的时候序号不要重复,否则序号一样的会一起删除呐)

方法一在删除函数中使用filter过滤的方法进行删除:

根据函数传递过来的序号值来进行过滤删除,把数组中的当前值与传递过来的值不相等的过滤出来重新赋值给原数组,结束之后调用函数loadList()即可。

方法二在删除函数中使用splice()+findIndex()的方法进行删除:

使用splice()首先需要知道要删除元素的下标,因此使用findIndex()来进行查找索引,把数组中的当前值与传递过的值相等的索引返回给变量index,然后使用splice(索引号,删除几个)来进行删除即可。最后在调用loadList()刷新一下数组中的元素即可。

<!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>Document</title>
</head>

<body>
    <input type="text" id="ipt1" />
    <input type="text" id="ipt2" />
    <button id="btn">添加</button>
    <table>
        <thead>
            <tr>
                <th>学号</th>
                <th>学生姓名</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
    <script>
        //实现添加功能
        //定义一个空数组用来存放数据
        var arr = [];
        var btn = document.querySelector("#btn");
        btn.onclick = function() {
            //点击按钮的时候要干什么事件,要做的事件就写到函数里
            var ipt1 = document.querySelector("#ipt1");
            var ipt2 = document.querySelector("#ipt2");
            //获取输入框的值
            var snum = ipt1.value;
            var sname = ipt2.value;
            //定义对象添加到数组中
            var obj = {
                num: snum,
                name: sname,
            };
            arr.push(obj);
            //调用函数重新加载数组
            loadList();
            //清楚输入框内容
            ipt1.value = "";
            ipt2.value = "";
        };
        //实现删除功能
        /* 方法1:使用filter过滤的方法 */
        /*  function delectClick(snum) {
                      //根据传递过来的学号值来进行过滤删除
                                arr = arr.filter(function(v) {
                                    return v.num != snum;
                                });
                                loadList();
                            } */
        /* 方法2:使用splice(下标,1) 方法-->通过findIndex查找到要删元素的下标*/
        function delectClick(snum) {
            var index = arr.findIndex(function(v) {
                return v.num == snum;
            });
            arr.splice(index, 1);
            loadList();
        }
        //采用字符串拼接的方式把数组中的元素放到tbody中
        //(将其封装成一个函数便于多次调用)
        function loadList() {
            var str = "";
            arr.forEach(function(v) {
                str =
                    str +
                    `<tr>
          <td>${v.num}</td>
          <td>${v.name}</td>
          <td><button onclick="delectClick('${v.num}')">删除</button></td>
        </tr>`;
            });
            var tbody = document.querySelector("tbody");
            tbody.innerHTML = str;
        }
    </script>
</body>

</html>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现: HTML代码: ```html <input type="text" id="input-name" placeholder="姓名"> <input type="text" id="input-age" placeholder="年龄"> <button id="btn-add">添加</button> <table id="table"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> </thead> <tbody id="table-body"></tbody> </table> ``` JS代码: ```js // 获取DOM元素 const inputName = document.getElementById('input-name'); const inputAge = document.getElementById('input-age'); const btnAdd = document.getElementById('btn-add'); const tableBody = document.getElementById('table-body'); // 定义数据 let data = []; // 添加事件监听器 btnAdd.addEventListener('click', () => { const name = inputName.value.trim(); const age = inputAge.value.trim(); if (name && age) { // 添加数据 data.push({ name, age }); // 清空输入框 inputName.value = ''; inputAge.value = ''; // 更新表格 renderTable(); } }); // 渲染表格 function renderTable() { let html = ''; data.forEach((item, index) => { html += ` <tr> <td>${item.name}</td> <td>${item.age}</td> <td> <button class="btn-delete" data-index="${index}">删除</button> <button class="btn-edit" data-index="${index}">编辑</button> </td> </tr> `; }); tableBody.innerHTML = html; // 添加删除和编辑事件监听器 const btnDeletes = document.querySelectorAll('.btn-delete'); btnDeletes.forEach(btn => { btn.addEventListener('click', () => { const index = btn.getAttribute('data-index'); data.splice(index, 1); renderTable(); }); }); const btnEdits = document.querySelectorAll('.btn-edit'); btnEdits.forEach(btn => { btn.addEventListener('click', () => { const index = btn.getAttribute('data-index'); const item = data[index]; const newName = prompt('请输入新的姓名', item.name); const newAge = prompt('请输入新的年龄', item.age); if (newName && newAge) { data.splice(index, 1, { name: newName, age: newAge }); renderTable(); } }); }); } ``` 实现思路: 1. 定义数据变量 `data`,存放添加内容,初始为空数组 `[]`。 2. 获取输入框和按钮的 DOM 元素。 3. 给按钮添加点击事件监听器,当点击按钮时,获取输入框的,如果不为空,则将输入内容添加到 `data` 数组,并清空输入框;最后调用 `renderTable()` 函数更新表格。 4. 定义 `renderTable()` 函数,用于将 `data` 数组内容渲染到表格。首先定义空字符串 `html`,然后使用 `forEach()` 遍历 `data` 数组,将每个元素的 `name` 和 `age` 属性拼接成一行 HTML 代码,并添加到 `html` 。最后将 `html` 赋表格的 `innerHTML` 属性,更新表格内容。 5. 在 `renderTable()` 函数添加删除和编辑按钮的事件监听器。首先使用 `querySelectorAll()` 获取所有的删除和编辑按钮元素,然后使用 `forEach()` 遍历这些元素,给每个按钮添加点击事件监听器。当点击删除按钮时,获取该按钮的 `data-index` 属性,即该按钮对应的数据在 `data` 数组的下标,然后使用 `splice()` 方法从 `data` 数组删除该元素,并调用 `renderTable()` 函数更新表格。当点击编辑按钮时,同样获取该按钮的 `data-index` 属性,然后使用 `prompt()` 方法弹出输入框,让用户输入新的姓名和年龄。如果用户输入了新的姓名和年龄,则使用 `splice()` 方法将 `data` 数组对应元素替换成新的内容,并调用 `renderTable()` 函数更新表格

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值