练习:动态创建表格

根据用户输入的行列数创建表格 表格的每一行再增加一列删除列

<!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>Document</title>
    <style>
        td {
            padding: 10px;
        }
    </style>
</head>

<body>
    行数<input type="text" name="" id=""> 列数
    <input type="text" name="" id="">

    <input type="button" value="创建" />

    <script>
        // 根据行列数创建表格 表格的每一行再增加一列删除列

        //创建表格函数
        function createTable() {
            var newTable = document.createElement('table');
            newTable.id = 'newTable';
            newTable.setAttribute('border', 1);
            //获取需要创建表格的行列数
            var rowNum = document.getElementsByTagName('input')[0].value;
            var colNum = document.getElementsByTagName('input')[1].value;
            for (var i = 0; i < rowNum; i++) {
                //创建行
                var createRow = newTable.insertRow();
                for (var j = 0; j < colNum; j++) {
                    //创建列
                    var createCol = createRow.insertCell();
                    createCol.innerHTML = i + '--' + j;
                }
                //增加一列,删除此列所在的行
                var menuCol = createRow.insertCell();
                var deleteBtn = document.createElement('input');
                deleteBtn.type = 'button';
                deleteBtn.value = '删除此行'
                    // with(deleteBtn) {
                    //     type = 'button';
                    //     value = '删除此行';
                    // }
                deleteBtn.setAttribute('name', 'deleteRowBtn');
                menuCol.appendChild(deleteBtn);
            }


            document.body.appendChild(newTable);
        }
        //删除行数
        function deleteCurRow() {
            let rowNum = document.getElementsByTagName('input')[0].value;
            let newTable1 = document.querySelector('table');
            let deleteNum = document.getElementsByName('deleteRowBtn');
            //给每一个删除行 按钮绑定单机事件
            for (let k = 0; k < deleteNum.length; k++) {
                deleteNum[k].onclick = function() {
                    //获取当前按钮所在的行号
                    //var s = this.parentNode.parentNode.rowIndex;
                    //console.log(s);
                    //newTable1.deleteRow(s);
                    this.parentNode.parentNode.remove();
                }
            }
        }
        var createMyTable = document.getElementsByTagName('input')[2];
        createMyTable.onclick = function() {
            createTable();
            deleteCurRow();
        }
    </script>
</body>

</html>

效果图:

在这里插入图片描述

进阶

<body>
    行:<input type="text" name="" id="row">
    列:<input type="text" name="" id="col">
    <input type="button" value="创建" id="btn"/>
    <div id="box">
        <!-- <table>
            <tr>
                <td></td>
            </tr>
        </table> -->
    </div>
    <script>
        function $(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');
            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';
                    oTr.appendChild(oTd);
                }
                // 再添加一列
                var endTd = create('td');
                endTd.innerHTML = '<a href="javascript:;">删除</a>';
                oTr.appendChild(endTd);
                oTable.appendChild(oTr);
            }
            $('box').appendChild(oTable);

            // 给删除绑定单击事件 删除元素是动态创建 事件绑定在函数内
            var as = $('box').getElementsByTagName('a');
            for(var i = 0; i < as.length; i++) {
                as[i].onclick = function() {
                    if ( confirm('你确定要删除吗?') ) {
                        this.parentNode.parentNode.remove();
                    }    
                }
            }
        }

        
        function push(arr,...val) {
            //var start = arr.length;
            for(var i = 0; i < val.length; i++) {
                arr[arr.length] = val[i];
            }
            return arr.length;
        } 
        var arr = [1,2,3];
        var len = push(arr,4,5,6,7);
        console.log(arr);
        console.log(len);
        
    </script>
</body>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值