用JavaScript + HTML 实现,根据手动输入的行列数动态创建表格,及动态删除表格案例

Ⅰ、问题描述:

1、用JavaScript + html实现,动态创建表格及动态删除表格;
2、分析:
A、用 html 实现在页面显示输入行与列的两个文本框;
B、实现输入 m 行、n 列的数值,在点击创建后,就形成了一个 m*n 表格;
C、创建可获取随机颜色的函数,等待调用;
D、实现删除的绑定事件,在单击删除按钮之后,实现行元素的删除,以及删除后整个表格的显示;

Ⅱ、实现过程如下:

1、运行软件VScode,亲测可实现;
2、运行代码:

<!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" name="" id="row">
  列:<input type="text" name="" id="col">
  <input type="button" value="创建" id="btn" />
  <div id="box">


  </div>
  <script>
    function $(id) {
    
       //封装一个函数,根据 id 来找元素的函数;
      return document.getElementById(id);
    }

    function create(tagName) {
    
     //封装一个根据标签名来创建新元素的函数;
      return document.createElement(tagName);
    }

    $('btn').onclick = function () {
    
    
      var rValue = $('row').value;
      var cValue = $('col').value;

      var oTable = create('table');  //使能看到添加的表格的元素,专门添加的 border 的值;
      oTable.border = 1;
      for (var i = 0; i < rValue; i++) {
    
      //此时循环的目的:迎合你输入的行数;
        var oTr = create('tr');
        for (var j = 0; j < cValue; j++) {
    
     //此时循环的目的:迎合输入的列数,使得表格达到你想要的情况;
          var oTd = create('td');  
          oTd.innerHTML = 'aaa';                 //将 'aaa' 的值添加到每一个单元格中;
          oTd.style.backgroundColor = getColor();//将每一个单元格中的背景色设置成随机的;
          oTr.appendChild(oTd);     //每次的 oTd 都作为 oTr 的一个子元素来添加进去;
        }

        var endTd = create('td');  // 再添加一列(目的:显示删除的操作)
        endTd.innerHTML = '<a href="javascript:;">删除</a>';
        oTr.appendChild(endTd);  //在 oTr(行标记) 中添加 endTd(列标记);
        oTable.appendChild(oTr); //在 oTable(表格) 中添加 oTr(行标记);
      }
      $('box').appendChild(oTable);//将 oTable 放在 id 为 box 的 div 中;



      var as = $('box').getElementsByTagName('a'); //绑定单击事件,并获取 a标签 的相关信息;
      for (var i = 0; i < as.length; i++) {
    
    
        as[i].onclick = function () {
    
    
          if (confirm('你确定要删除这一行吗?')) {
    
     //弹出一个确定的对话框 confirm();(你点确定,它的值就是 true,而你点取消,它的值就是 false;)
            this.parentNode.parentNode.remove(); // a标签 的父亲是 td,td 的父亲是 tr, 因此让 a标签 父亲的父亲删除就可以了(即:删除了 a标签 所在的那一行信息);
          }
        }
      }



      //任意获取 '#******' 所表示的所有的颜色值 (即:通过拼接起来的 6 个数字所表示的颜色值);
      function getColor() {
    
    
        var str = '0123456789abcdef'; // 0-15 (随机找一个角标)
        var color = "#";    /* 开头肯定是以'#'开始,因此其为第一个 */
        // 循环6次 每次随机生成一个字符
        for (var i = 0; i < 6; i++) {
    
    
          var num = rand(0, 15);
          color += str[num];
        }
        return color;
      }


      function rand(min, max) {
    
      //通过 Math 操作可以获取:min 到 max 的随机的整数值;
        return Math.round(Math.random() * (max - min) + min);
      }
    }
  </script>
</body>

</html>

3、结果展示:
A、显示行与列的两个文本框,结果展示:
在这里插入图片描述
B、根据输入的行列值,创建单元格是随机背景颜色的表格,结果展示;(以 20*20 为例);
在这里插入图片描述
C、点击第一行删除的按钮,结果展示;
在这里插入图片描述
D、点击确定按钮,结果展示;(即:第一行就被删除了)
在这里插入图片描述

Ⅲ、小结:

哪里有不对或不合适的地方,还请大佬们多多指点和交流!

猜你喜欢

转载自blog.csdn.net/weixin_43405300/article/details/118102657