【原创】利用js生成表格 实现删除、复制、全选、反选

版权声明:本文原创为夏狮狮,转载请说明出处! https://blog.csdn.net/weixin_42470791/article/details/81119933


【原创】利用js生成动态表格   实现删除、复制、全选、反选功能:
  不多说下面放代码
<!DOCTYPE html>
<html lang="zh">

    <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>动态生成表格 并实现 删除、  复制 、  全选、反选</title>
        <style type="text/css">
            table {
                margin-top: 15px;
                border-collapse: collapse;
                border: 1px solid #aaa;
                width: 100%;
            }
            
            table th {
                vertical-align: baseline;
                padding: 5px 15px 5px 6px;
                background-color: #3F3F3F;
                border: 1px solid #3F3F3F;
                text-align: left;
                color: #fff;
            }
            
            table td {
                vertical-align: text-top;
                padding: 6px 15px 6px 6px;
                border: 1px solid #aaa;
            }
            
            table tr:nth-child(2n) {
                background-color: #F5F5F5;
            }
            
            table tr:nth-child(2n-1) {
                background-color: #fff;
            }
            
            #color {
                background:yellowgreen;
            }
        </style>
        <script type="text/javascript">
            //【注】利用时间委托实现
               
            window.onload = function() {
                //利用字符串模板动态生成table
                var table = `
                            <table id="table_box">
                                <thead id="thead">
                                    <tr>
                                        <th><input type="checkbox" id="checkbox2" />全<input type="checkbox" id="checkbox3" />反</th>
                                        <th>姓名</th>
                                        <th>爱好</th>
                                        <th>电话</th>
                                        <th>地址</th>
                                        <th></th>
                    
                                    </tr>
                                </thead>
                                <tbody id="tbody">
                                    
                                    
                                    <tr>
                                        <td><input type="checkbox" id="checkbox1" /></td>
                                        <td>姓名1</td>
                                        <td>羽毛球</td>
                                        <td>111256789</td>
                                        <td>广州</td>
                                        <td>
                                            <input type="button" id="delete" value="删除" />
                                            <input type="button" id="copy" value="复制" />
                                        </td>
                    
                                    </tr>
                                    <tr>
                                        <td><input type="checkbox" id="checkbox1" /></td>
                                        <td>姓名2</td>
                                        <td>羽毛球</td>
                                        <td>111256789</td>
                                        <td>广州</td>
                                        <td>
                                            <input type="button" id="delete" value="删除" />
                                            <input type="button" id="copy" value="复制" />
                                        </td>
                    
                                    </tr>
                                    <tr>
                                        <td><input type="checkbox" id="checkbox1" /></td>
                                        <td>姓名3</td>
                                        <td>羽毛球</td>
                                        <td>111256789</td>
                                        <td>广州</td>
                                        <td>
                                            <input type="button" id="delete" value="删除" />
                                            <input type="button" id="copy" value="复制" />
                                        </td>
                    
                                    </tr>
                                    <tr>
                                        <td><input type="checkbox" id="checkbox1" /></td>
                                        <td>姓名4</td>
                                        <td>羽毛球</td>
                                        <td>111256789</td>
                                        <td>广州</td>
                                        <td><input type="button" id="delete" value="删除" />
                                            <input type="button" id="copy" value="复制" />
                                        </td>
                                    </tr>
                                </tbody>
                            </table>`;
                //table写入页面
                document.body.innerHTML = table;
                //获取表格
                var table_box = document.getElementById('table_box')
                
                //利用事件委托实现表格的删除、复制、全选、反选
                table_box.onclick = function(e) {

                            e = e || window.event; 
                            var target = e.target || window.srcElement; //兼容写法
        
                            var tr = target.parentElement; //【注】获取事件源所在的行
                            
                            //全选
                            if(target.id === 'checkbox2'){
                                   var tr = tbody.children;
                               for(var i = 0;i<tr.length; i++){
                                        if(target.checked == true){
                                                tr[i].children[0].children[0].checked = true;
                                                tr[i].id = 'color'
                                        }
                                        if(target.checked == false){
                                                tr[i].children[0].children[0].checked = false;
                                                tr[i].id = '';
                                        }
                                   
                               
                               }
        
                               }
                            //反选    
                            if(target.id === 'checkbox3'){
                                //获取tr
                                   var tr = tbody.children;
                               for(var i = 0;i<tr.length; i++){
                                   //tbody复选框状态
                                 var status = tr[i].children[0].children[0].checked;
                                             if(status == false){
                                                   tr[i].children[0].children[0].checked = true;
                                                   tr[i].id = 'color';
                                               }
                                             if(status == true){
                                                   tr[i].children[0].children[0].checked = false;
                                                   tr[i].id = '';
                                                   
                                            }
                               
                               }
        
                               }
                            //勾选框
                            if(target.id == 'checkbox1'){
                                tr.parentElement.id = 'color' 
                                if(target.checked == false){
                                    tr.parentElement.id = '' 
                                }
            
                            }

                            //点击改变行颜色
                            if(target.tagName === 'TD'){
                                
                                if(tr.id == ''){
                                     tr.id = 'color';
                                  tr.children[0].children[0].checked = true;//这里应该会有BUG
                                     return false;
                                }
        
                                tr.id = '';
                          
                                tr.children[0].children[0].checked = false;  
                            }
                                
        
                            //删除行
                            if(target.id == 'delete') {
        
                                //得到tr
                                var deleteTr = tr.parentElement;
        
                                deleteTr.parentElement.removeChild(deleteTr);
        
                            }
                            //复制行
                            if(target.id == 'copy') {
        
                                //得到copy所在的行
                                var copyTr = tr.parentElement;
        
                                //克隆行
                                var copyRows = copyTr.cloneNode(true)
                                copyTr.parentElement.appendChild(copyRows);
        
                            }
                            

                }
    
            }
        </script>

    </head>

    <body>
    
        
    </body>

</html>

猜你喜欢

转载自blog.csdn.net/weixin_42470791/article/details/81119933