JS 动态生成表格

案例分析:
① 因为表格里面的数据都是动态生成的,实际开发的数据都是要保存到数据库里的,我们这里暂且不使用数据库,采取自定义数据的方式完成案例,数据我们以对象的形式存储到一个数组中。
② 所有的数据都是放到 tbody 行里面的。
③ 行很多,所以我们需要循环创建多个行,存放多组数据。
④ 每个行里面又有很多单元格,我们还需要继续使用 for 循环创建多个单元格,并且把数据存入里面(双重 for 循环)。
⑤ 最后一列单元格是删除,需要单独创建单元格。

<!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>
    <style>
        table {
            width: 500px;
            margin: 100px auto;
            border-collapse: collapse;
            text-align: center;
        }
        td,th {
            border: 1px solid #333;
        }
        thead tr {
            height: 40px;
            background-color: #ccc;
        }
        tbody tr {
            height: 35px;
        }
    </style>
</head>
<body>
    <table cellspacing="0">
        <thead>
            <tr>
                <th>姓名</th>
                <th>科目</th>
                <th>成绩</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    <script>
        //1.准备数据
        var datas = [{
                name: '张三',
                subject: 'JavaScript',
                score: 100
            },{
                name: '李四',
                subject: 'JavaScript',
                score: 94
            },{
                name: '王五',
                subject: 'JavaScript',
                score: 98
            }];
        var tbody = document.querySelector('tbody');
        for (var i = 0; i < datas.length; i++) {
            //2.创建tr行
            var tr = document.createElement('tr');
            tbody.appendChild(tr);
            //3.创建普通单元格
            for (var k in datas[i]) {
                var td = document.createElement('td');
                //把当前对象里面的属性值给td
                td.innerHTML = datas[i][k]; 
                tr.appendChild(td);
            }
            //4.创建删除单元格
            var td = document.createElement('td');
            td.innerHTML = '<a href="javascript:;">删除</a>'
            tr.appendChild(td);
        } 
        //5.删除操作开始
        var as = document.querySelectorAll('a');
        for (var i = 0; i < as.length; i++) {
            as[i].onclick = function() {
                //当前链接所在行删掉
                tbody.removeChild(this.parentNode.parentNode);
            }
        } 
    </script>
</body>
</html>

这里顺便补充一下三种创建元素的区别:
① document.write 直接将内容写入页面的内容流,也就是说,它是在整个文档流执行完之后,才开始执行代码,导致页面全部重绘,所以我们一般不使用它;
② createElement 创建多个元素时效率稍低一点点,但结构更清晰;
③ innerHTML 可以采取数组的形式拼接,那么它创建多个元素的效率将是最高的(不要拼接字符串,效率很低)。

不同浏览器下,innerHTML 的效率要比 createElement 高!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript动态生成表格可以通过DOM操作来实现。以下是一些基本的步骤: 1. 首先创建一个table元素,并设置其属性(如id、border等)。 2. 创建thead元素和tbody元素,并添加到table中。 3. 创建tr元素作为thead中的一行,并创建th元素作为每列的标题。将th元素添加到tr中,再将tr添加到thead中。 4. 使用for循环或其他方法遍历数据,创建每个数据行,创建td元素用于每列数据。将td元素添加到tr中,再将tr添加到tbody中。 5. 将tbody添加到table中。 6. 最后将table元素添加到DOM中。 以下是一个简单的示例代码: ``` // 创建table元素 var table = document.createElement("table"); table.setAttribute("id", "myTable"); table.setAttribute("border", "1"); // 创建thead元素和tbody元素 var thead = document.createElement("thead"); var tbody = document.createElement("tbody"); // 创建thead中的一行 var tr = document.createElement("tr"); var th1 = document.createElement("th"); var th2 = document.createElement("th"); var th3 = document.createElement("th"); th1.innerHTML = "姓名"; th2.innerHTML = "年龄"; th3.innerHTML = "性别"; tr.appendChild(th1); tr.appendChild(th2); tr.appendChild(th3); thead.appendChild(tr); // 遍历数据,创建每个数据行 for (var i = 0; i < data.length; i++) { var tr = document.createElement("tr"); var td1 = document.createElement("td"); var td2 = document.createElement("td"); var td3 = document.createElement("td"); td1.innerHTML = data[i].name; td2.innerHTML = data[i].age; td3.innerHTML = data[i].sex; tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tbody.appendChild(tr); } // 将thead和tbody添加到table中 table.appendChild(thead); table.appendChild(tbody); // 将table添加到DOM中 document.body.appendChild(table); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栈老师不回家

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

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

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

打赏作者

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

抵扣说明:

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

余额充值