原创 

原生js动态生成表格,动态添加事件,实现前端CRUD(insertRow、insertCell、deleteRow使用)

分类:前端    412人阅读    IT小君  2022-11-24 20:08
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>题目4:社員基本情報一覧画面</title>
        <style type="text/css">        
            table,tr,th,td {
                border:1.5px solid rgb(0, 0, 0);
                cellpadding: "0";
                cellspacing: "0";
            }
            #dataTb td{
                padding:5px;
            }
            table {
                border-collapse:collapse;
            }
            form { 
                position:relative;
                left:50%;
                width:800px;
                height:700px;
                margin-left:-200px;
		        display: block;
                }
            #background {
                background-image: url(./SU.png);
                background-size:  100% 70%;
                background-repeat: no-repeat;
                background-position:100px 0px;
                width:900px;
                height:900px;
               }
        </style>
    </head>
    <body>
        <div id="background">
            <form>
                <div class="search">
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    姓名
                    <input type="text" id="searchKey">
                    <input type="button" onclick="renderData()" value="社員検索">
                     
                </div>
                <br>
                <div>
                    <table id="dataTb">
                        <thead align="center">
                            <tr>
                                <th>社員番号</th>
                                <th>姓名</th>
                                <th>生年月日</th>
                                <th>国籍</th>
                                <th>性别</th>
                                <th colspan="2">操作</th>
                            </tr>
                        </thead>
                    </table>
                </div>
                 <br>
                <div>
                    <table id="editTb">
                        <tr>
                            <th>
                                社員番号
                            </th>
                            <td>
                                <input type="text" id="number">
                            </td>
                        </tr>
                        <tr>
                            <tr>
                                <th>
                                    姓名
                                </th>
                                <td>
                                    <input type="text" id="name">
                                </td>
                            </tr>
                            <tr>
                                <th>
                                    生年月日
                                </th>
                                <td>
                                    <input type="text" id="brithday">
                                </td>
                            </tr>
                            <tr>
                                <th>
                                    国籍
                                </th>
                                <td>
                                    <input type="text" id="country">
                                </td>
                            </tr>
                            <tr>
                                <th>
                                    性别
                                </th>
                                <td>
                                    <input type="text" id="sex">
                                </td>
                            </tr>
                           
                        </table>
                         <input type="button" onclick="submitEdit()" value="確認">
                    </div>
                </form>
            </div>
        </body>
        <script>
            var datas=[{
                id:1,
                number:'11111',
                name:'山田花子',
                nation:'日本',
                brithday:'1990-01-12',
                gender:'女性'
            },{
                id:2,
                number:'2222',
                name:'彭于晏',
                nation:'中国',
                brithday:'1990-01-12',
                gender:"男性"
            }]
            
            var showData=null;

            let dataTb = document.getElementById("dataTb");
            let editTb = document.getElementById("editTb");
            let editItem = null
            let inputs = document.querySelectorAll('#editTb input');
            let editForm = {
                number:inputs[0],
                name:inputs[1],
                brithday:inputs[2],
                nation:inputs[3],
                gender:inputs[4]
            }

            function renderData(){
                deleteAllRow()
                let keyWord = document.getElementById("searchKey").value
                showData= JSON.parse(JSON.stringify(datas))
                if(null!=keyWord&&keyWord!=''){
                    showData= showData.filter(item=>item.name.indexOf(keyWord)>=0)
                }
                showData.forEach((item,index)=>{
                    addRow(item,index)
                });
            }

            function deleteAllRow(){
                let rowCount=dataTb.rows.length;    
                for (i=1;i<rowCount;i++){       
                  dataTb.deleteRow(i);     
                  rowCount=rowCount-1;        
                  i=i-1;        
                }
            }

            function addRow(data,index){
                let oTr = dataTb.insertRow(index+1);

                let oTd = oTr.insertCell();
                oTd.innerHTML = data.number;

                oTd = oTr.insertCell();
                oTd.innerHTML = data.name;

                oTd = oTr.insertCell();
                oTd.innerHTML = data.brithday

                oTd = oTr.insertCell();
                oTd.innerHTML =  data.gender

                oTd = oTr.insertCell();
                oTd.innerHTML = data.nation;

                oTd = oTr.insertCell();
                oTd.dataset.id = index
                oTd.onclick = function(){
                    let ind = parseInt(this.dataset.id)
                    datas.splice(ind, 1)
                    renderData()
                }
                oTd.innerHTML = '削除';

                oTd = oTr.insertCell();
                oTd.dataset.id = index
                oTd.onclick = function(){
                    editItem = datas[parseInt(this.dataset.id)]
                    edit()
                }
                oTd.innerHTML = '変更';
            }

            function edit(){
                editForm.number.value = editItem.number
                editForm.name.value = editItem.name
                editForm.nation.value = editItem.nation
                editForm.gender.value=editItem.gender
                editForm.brithday.value=editItem.brithday
            }

            function submitEdit(){
                editItem.number = editForm.number.value
                editItem.name = editForm.name.value
                editItem.nation = editForm.nation.value
                editItem.gender=editForm.gender.value
                editItem.brithday=editForm.brithday.value
                renderData()
            }

           window.onload=function(){
                renderData()
            }
        </script>
    </html>
   
点击广告,支持我们为你提供更好的服务

有机水果蔬菜HTML5网站模板

响应式咖啡饮品宣传网站模板

html5 svg夜空中星星流星动画场景特效

HTML5 Canvas竖直流动线条背景动画特效

HTML5数字产品服务公司网站模板

响应式太阳能能源公司网站模板

中小型创意设计服务公司网站模板

HTML5现代家居装潢公司网站模板

css+js实现的颜色渐变数字时钟动画特效

js+css3抽奖转盘旋转点餐代码

canvas炫酷鼠标移动文字粒子特效

现代时尚家具公司网站模板

网页设计开发公司网站模板

html5图标下拉搜索框自动匹配代码

小众时尚单品在线电子商务网站模板

html5 canvas进度条圆环图表统计动画特效

css鼠标跟随文字模糊特效

html5 canvas彩色碎片组合球形旋转动画特效

响应式时尚单品在线商城网站模板

jQuery右端悬浮带返回顶部特效

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务