JavaScript学习(六)——表格的动态添加与删除

JavaScript学习(六)——表格的动态添加与删除
基本页面

首先是去创建一个基本页面,上面有一个表格来展示信息

在这里插入图片描述

<div>
    <input id="id" type="text" placeholder="请输入编号">
    <input id="name" type="text" placeholder="请输入姓名">
    <input id="sex" type="text" placeholder="请输入性别">
    <input id="btn_add" type="button" value="添加">
</div>

<table id="table">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>1</td>
        <td>张三</td>
        <td></td>
        <td><a href="javascript:void(0);" >删除</a> </td>
    </tr>
    <tr>
        <td>2</td>
        <td>李四</td>
        <td></td>
        <td><a href="javascript:void(0);" >删除</a> </td>
    </tr>
    <tr>
        <td>3</td>
        <td>王五</td>
        <td></td>
        <td><a href="javascript:void(0);" >删除</a> </td>
    </tr>

</table>
动态删除

步骤:

  1. 首先点击删除,将会从table中删除点击的链接所在的tr
  2. 获取table节点
  3. 获取tr节点
  4. table节点删除tr节点

为a标签设置一个点击事件,a标签的父节点是td,td的父节点是tr,tr的父节点是table,所以函数将a标签传入,通过parentNode可以获取父节点

<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>

定义删除函数

function del_tr(obj) {
    var table = obj.parentNode.parentNode.parentNode;
    var tr = obj.parentNode.parentNode;
    table.removeChild(tr);
}

点击删除,可以删除表格的信息

在这里插入图片描述

动态添加

接下来实现如何动态添加信息

步骤

  1. 添加按钮增加点击事件
  2. 获取需要添加的属性
  3. 分别创建属性的td标签
  4. 在td标签中添加需要展示的属性,操作的td标签中要添加a标签
  5. 创建tr标签,把所有的td标签添加进来
  6. 往table标签中添加tr标签

首先给添加按钮增加点击事件,在add方法中添加之后的所有操作

var button = document.getElementById("btn_add");
button.setAttribute("onclick","add()");
function add(){

}

从输入框中获取到需要添加的属性

var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var sex = document.getElementById("sex").value;

将属性转换为节点,这样才能添加到DOM树中,创建td节点,td节点中添加展示的属性,其余两个td节点是一样的操作

var id_td = document.createElement("td");
var id_text = document.createTextNode(id);
id_td.appendChild(id_text);

第四列不仅仅是文字,还有一个a标签

var a_td = document.createElement("td");
var a = document.createElement("a");
var a_text = document.createTextNode("删除");
a.appendChild(a_text);
a.setAttribute("href", "javascript:void(0);");
a.setAttribute("onclick", "del_tr(this)");
a_td.appendChild(a);

创建tr节点,在tr节点中添加之前创建的所有td节点

var tr = document.createElement("tr");
tr.appendChild(id_td);
tr.appendChild(name_td);
tr.appendChild(sex_td);
tr.appendChild(a_td);

最后在table节点下添加tr节点

document.getElementById("table").append(tr);

点击添加按钮,添加成功

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

    </style>
</head>
<body>
<div>
    <input id="id" type="text" placeholder="请输入编号">
    <input id="name" type="text" placeholder="请输入姓名">
    <input id="sex" type="text" placeholder="请输入性别">
    <input id="btn_add" type="button" value="添加">
</div>

<table id="table">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>1</td>
        <td>张三</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>
    <tr>
        <td>2</td>
        <td>李四</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>
    <tr>
        <td>3</td>
        <td>王五</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>

</table>

<script>
    function del_tr(obj) {
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode;
        table.removeChild(tr);
    }

    var button = document.getElementById("btn_add");
    button.setAttribute("onclick","add()");

    function add() {
        var id = document.getElementById("id").value;
        var name = document.getElementById("name").value;
        var sex = document.getElementById("sex").value;

        var id_td = document.createElement("td");
        var id_text = document.createTextNode(id);
        id_td.appendChild(id_text);

        var name_td = document.createElement("td");
        var name_text = document.createTextNode(name);
        name_td.appendChild(name_text);

        var sex_td = document.createElement("td");
        var sex_text = document.createTextNode(sex);
        sex_td.appendChild(sex_text);

        var a_td = document.createElement("td");
        var a = document.createElement("a");
        var a_text = document.createTextNode("删除");
        a.appendChild(a_text);
        a.setAttribute("href", "javascript:void(0);");
        a.setAttribute("onclick", "del_tr(this)");
        a_td.appendChild(a);


        var tr = document.createElement("tr");
        tr.appendChild(id_td);
        tr.appendChild(name_td);
        tr.appendChild(sex_td);
        tr.appendChild(a_td);

        document.getElementById("table").append(tr);

    }
</script>
</body>
</html>

也可以之间在table的innerHTML后面直接添加想要添加的标签

table.innerHTML+="<tr><td>" +id+
    "</td><td>" + name +
    "</td><td>" + sex+
    "</td><td>" + "<a href=\"javascript:void(0);\" οnclick=\"del_tr(this)\">删除</a>" +
    "</td></tr>";
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

    </style>
</head>
<body>
<div>
    <input id="id" type="text" placeholder="请输入编号">
    <input id="name" type="text" placeholder="请输入姓名">
    <input id="sex" type="text" placeholder="请输入性别">
    <input id="btn_add" type="button" value="添加">
</div>

<table id="table">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>1</td>
        <td>张三</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>
    <tr>
        <td>2</td>
        <td>李四</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>
    <tr>
        <td>3</td>
        <td>王五</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
    </tr>

</table>

<script>
    function del_tr(obj) {
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode;
        table.removeChild(tr);
    }

    var button = document.getElementById("btn_add");
    button.setAttribute("onclick","add()");

    function add() {
        var id = document.getElementById("id").value;
        var name = document.getElementById("name").value;
        var sex = document.getElementById("sex").value;

        var table = document.getElementById("table");
        table.innerHTML+="<tr><td>" +id+
            "</td><td>" + name +
            "</td><td>" + sex+
            "</td><td>" + "<a href=\"javascript:void(0);\" οnclick=\"del_tr(this)\">删除</a>" +
            "</td></tr>";

    }
</script>
</body>
</html>
  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张宜强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值