您好!欢迎访问家园网-www.jy.wang!

家园网

动态创建表格行

网络 作者:本站 点击:

这几行代码是实现动态创建表格行的核心逻辑。让我详细解释:

代码逻辑分析

if(k==0) {  // 当列号为0时(每行的第一个单元格)
    // 该行不存在,需要创建新行
    tr = document.createElement("tr");     // 创建<tr>元素
    tr.id = "tr"+j;                         // 设置行的ID为"tr0"、"tr1"等
    tr.style.backgroundColor = "orange";    // 设置行背景色为橙色
    table.appendChild(tr);                   // 将行添加到表格中
}
else {  // 列号不为0时
    // 该行已存在,获取已创建的行
    tr = document.getElementById("tr"+j);    // 通过ID获取已存在的行
}

为什么这样设计?

这种设计利用了表格按行逐列填充的特性:

场景模拟

假设要填充一个10列×10行的表格,处理顺序是:

  1. 第一轮循环 (i=0):

    • j=0, k=0 → 创建第0行,ID="tr0"

    • 然后添加第0列的数据

  2. 第二轮循环 (i=1):

    • j=0, k=1 → 列号k≠0

    • 获取已存在的"tr0"行

    • 然后添加第1列的数据

  3. 继续直到 i=9:

    • 都是j=0, k=1-9 → 都在第0行添加列

  4. 当 i=10:

    • j=1, k=0 → 创建第1行,ID="tr1"

    • 后续i=11-19都在第1行添加列

执行过程示例

// 假设intArray有20个元素:[a0, a1, a2, ..., a19]
i=0:  j=0, k=0  → 创建行tr0,添加单元格a0
i=1:  j=0, k=1  → 获取tr0,添加单元格a1
i=2:  j=0, k=2  → 获取tr0,添加单元格a2
...
i=9:  j=0, k=9  → 获取tr0,添加单元格a9
i=10: j=1, k=0  → 创建行tr1,添加单元格a10
i=11: j=1, k=1  → 获取tr1,添加单元格a11
...
i=19: j=1, k=9  → 获取tr1,添加单元格a19

生成的HTML结构

<table id="table">
    <tr id="tr0" style="background-color: orange;">
        <td>a0</td>
        <td>a1</td>
        <td>a2</td>
        <!-- ... 直到 a9 -->
    </tr>
    <tr id="tr1" style="background-color: orange;">
        <td>a10</td>
        <td>a11</td>
        <td>a12</td>
        <!-- ... 直到 a19 -->
    </tr>
    <!-- 更多行... -->
</table>

这种设计的优点

  1. 高效:不需要预先创建所有行,按需创建

  2. 准确:通过ID精确获取对应的行

  3. 灵活:可以轻松地为每行设置不同的样式

  4. 内存友好:只创建实际需要的DOM元素

关键点理解

  • k==0 的判断:每行的第一个数据触发创建新行

  • tr.id="tr"+j:为每行设置唯一ID,便于后续查找

  • else分支:后续的列直接获取已存在的行,避免重复创建

这种模式在处理表格数据时非常常见,是一种典型的"懒创建"模式,只在需要时才创建DOM元素。

标签: