博客列表 >使用JS动态一张表格,数据用数组进行模拟—2019年1月17日

使用JS动态一张表格,数据用数组进行模拟—2019年1月17日

笑颜常开的博客
笑颜常开的博客原创
2019年02月12日 23:35:20747浏览

    本节知识点主要是学习表格的JS操作,涉及到的具体知识点有children子节点的寻找、table对象定义的一些属性(tHead、tBodies、tFoot、rows和cells)。

示例代码如下:

实例

<!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>js操作表格的基本技巧</title>
  <style>
    table,
    td,
    th {
      border: 1px solid #666;
    }

    table {
      width: 500px;
      border-collapse: collapse;
      text-align: center;
    }

    table caption {
      font-size: 1.2rem;
      margin-bottom: 15px;
    }

    thead tr:nth-of-type(1) {
      background-color: lightblue;
    }
  </style>
</head>

<body>

  <table id="cart1">
    <caption>购物车1</caption>
    <!-- 注: 浏览器会自动给以下内容添加一个tbody容器 -->
    <!-- 为防止作用js获取元素出错,我们手工添加上这个tbody -->
    <!-- 将表头手工加上thead,否则会被添加二个tbody,因为table允许使用多个tbody -->
    <thead>
      <tr>
        <th>编号</th>
        <th>品名</th>
        <th>数量</th>
        <th>单价</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td>1</td>
        <td>手机</td>
        <td>1</td>
        <td>3000</td>
      </tr>
      <tr>
        <td>2</td>
        <td>电脑</td>
        <td>1</td>
        <td>5000</td>
      </tr>
      <tr>
        <td>3</td>
        <td>手机</td>
        <td>1</td>
        <td>3000</td>
      </tr>
    </tbody>
  </table>

  <hr>

  <table id="cart2">
    <caption>购物车2</caption>
    <thead>
      <tr>
        <th>编号</th>
        <th>品名</th>
        <th>数量</th>
        <th>单价</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>

  <hr>
  <script type="text/javascript">
    // 获取电脑和单价
    var cart1 = document.getElementById('cart1');
    // 电脑在table的第3个子元素的第2个子元素下的第2个子元素的内容中
    console.log(cart1.children[2].children[1].children[1].innerHTML);
    // 单价able的第3个子元素的第2个子元素下的第4个子元素的内容中
    console.log(cart1.children[2].children[1].children[3].innerHTML);
    // 更新单元格的数据是, 使电脑价格变为 6000
    cart1.children[2].children[1].children[3].innerHTML = 6000;
    /*table对象定义一些属性,可以快速获取指定的子元素
            1. tHead: <thead>
            2. tBodies: <tbody>...复数
            3. tFoot: <tfoot>
            4. rows: 所有行
            5. cells: 所有列*/
    console.log(cart1.tBodies[0].rows[1].cells[3].innerHTML); //另一种更简单的写法
    var data = [{
        id: 1,
        name: '牛奶',
        count: 3,
        price: 50
      },
      {
        id: 2,
        name: '苹果',
        count: 10,
        price: 80
      },
      {
        id: 3,
        name: '衣服',
        count: 2,
        price: 600
      }
    ];
    var cart2 = document.getElementById('cart2');
    var tbody = cart2.children[2];
    //遍历对象数组,value是一个对象
    data.forEach(function(value) {
      var tr = document.createElement("tr");
      tr.innerHTML += '<td>' + value.id + '</td>';
      tr.innerHTML += '<td>' + value.name + '</td>';
      tr.innerHTML += '<td>' + value.count + '</td>';
      tr.innerHTML += '<td>' + value.price + '</td>';
      tbody.appendChild(tr);
      // value.id
      // value.name
      // value.count
      // value.price
    })
  </script>
</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行结果

捕获.PNG

手写代码

QQ图片20190212170202.jpg

总结

1、

cart1.children[2].children[1].children[3].innerHTML和cart1.tBodies[0].rows[1].cells[3].innerHTML

 含义相同,指代的都是在table的第3个子元素的第2个子元素下的第2个子元素的内容

2、

table对象定义一些属性,可以快速获取指定的子元素:(1). tHead: <thead> (2). tBodies: <tbody>...复数

(3). tFoot: <tfoot>(4). rows: 所有行(5). cells: 所有列





声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议