zoukankan      html  css  js  c++  java
  • 原生JS例子

    利用原生JS做一个班级统计表

    实现功能:

    1.点击添加建立一行表格

    2.点击删除,删除一行表格

    3.点击每个单元格可以输入内容,焦点移走的时候保存内容

    思路分析:

    1.建立简单的HTML的表格

    2.通过JS向表格中添加元素

       (1):添加tr td button 等元素

       (2):添加删除按钮

    3.通过DOM操作向表格中添加内容

      (1):向每个td中添加点击事件

       (2):向每个td中添加标记

       (3):寻找标记,并在标记的td中添加 input标签

       (4):焦点移除,删除标记,并且重新给每个td加上点击事件

       (5):获取输入的值,并赋值到变量

       (6):将获取的变量输入到td中保存

       (7):向删除按钮添加删除事件,删除自身tr

    代码:

    //建立简单的HTML表格

    <body>
        <center>
            <table id="tab">
                <tr>
                    <th width="25%">年级</th>
                    <th width="25%">性别</th>
                    <th width="25%">姓名</th>
                    <th width="25%">操作</th>
                </tr>
            </table>
            <button id="but">添加</button>
        </center>
    </body>

    //利用JS向其中添加内容

    //定义全局变量

    var tabdom="";
    var butdom="";
    var n=0;
    var trdom="";
    var tddom="";
    var czdom="";
    var tdlength="";
    var dd="";
    var int="";

    //初始化
    window.onload = function(){
        tabdom=document.getElementById("tab");
        butdom=document.getElementById("but");
        butdom.addEventListener("click",touch);
        tabdom.setAttribute("width","50%");
        tabdom.setAttribute("border","1");
        dd=document.getElementsByTagName("td");
    }

    //定义添加一行的方法
    function touch(){
        n++;    //设定一个标记,用来区分每个td
        trdom=document.createElement("tr");   //利用DOM添加一个TR
        trdom.style.height="30px";                 
        tdlength=document.getElementsByTagName("th");     //获取TH标签用来确定TD标签循环的次数
        for(var i=0;i<tdlength.length;i++){                   //循环添加TD和删除按钮
            tddom=document.createElement("td");       //利用DOM添加TD
            if(i == tdlength.length-1){                            //向最后一个TD中添加删除按钮
                czdom=document.createElement("button");        //利用DOM添加一个按钮
                czdom.innerHTML="删除";                       //向按钮中添加提示文字
                czdom.addEventListener("click",del);       //添加按钮删除事件
                czdom.setAttribute("flage",n);                 //向按钮添加标记,区分每个按钮
                tddom.appendChild(czdom);                  //将按钮添加到TD
                tddom.style.textAlign="center";              //设置按钮的属性,用来区分又按钮的单元格和没有按钮的单元格
            }
            trdom.appendChild(tddom);                      //循环箱TR中添加TD
            trdom.setAttribute("flage",n);                    //循环向TR中添加标记
        }
        tabdom.appendChild(trdom);                       //循环向表格中添加TR
        
        //给每个TD添加点击事件,用来添加input


        dd=document.getElementsByTagName("td");
        
        for(var f=0;f<dd.length;f++){
            //alert(dd[f]);
            dd[f].addEventListener("click",add);
        }
    }
    function add(){                                                 //添加input事件
        var td_a1="";
        var td_info=this;                                         //保证this是事件本身不会变化
        if(td_info.style.textAlign != ""){                  //排除向按钮中添加input标签
            return;
        }
        td_a1=td_info.innerHTML;                          //获取TD中的内容
        int=document.createElement("input");        //添加input标签
        int.setAttribute("value",td_a1);                  //向input中添加内容
        int.addEventListener("blur",xiaoshi);          //设置焦点移走的事件
        int.style.border="none";                             //删除边框
        tddom .setAttribute("set","set");                 //设置标志区分TD
        td_info.appendChild(int);                         //向TD中添加input标签
        for(var i=0;i<dd.length;i++){                       //找到标记的TD删除点击事件
            dd[i].removeEventListener("click",add);
        }
    }
    function xiaoshi(){                                       .//设置一个取消input的方法
        var td_a2=this;                                         //保证this是事件本身不会变化
        var int_info=int.getAttribute("value");   
        if(td_a2.getAttribute("set")=="set"){         //找到标记的TD
            td_a2.innerHTML=int_info;                  //将内容给TD
            td_a2.setAttribute("set","");                 //清除标记
        }

    //向每个TD中添加点击事件


        dd=document.getElementsByTagName("td");
        for(var f=0;f<dd.length;f++){
            dd[f].addEventListener("click",add);
        }
    }
    function del(obj){                                                       //定义删除方法
        var obj1=this;                                                        //保证this是事件本身不会变化
        var tr=document.getElementsByTagName("tr");  
            n=obj1.getAttribute("flage");                               //获取标记
        for(var i=0;i<tr.length;i++){                                     //找到标记并执行删除操作
            if(n==tr[i].getAttribute("flage")){
            tr[i].remove();
            }
        }
    }

    易错点注意:

    1.注意给删除按钮和TR添加标记,少添加时会引找不到标记而删掉表格

    2.注意获取TD标签时不要使用tddom,tddom是添加的,并不是整个单元格的TD,应重新定义TD

    3.注意给TD设置标记

    4.删除点击事件后应重新给每个TD重新添加

  • 相关阅读:
    顺序 | order (Flexible Box Layout)
    顶部边距 | margin-top (Basic Box Model)
    面具重复 | mask-repeat (Masking)
    面具类型 | mask-type (Masking)
    面具模型 | mask-mode (Masking)
    面具大小 | mask-size (Masking)
    面具图像 | mask-image (Masking)
    mycat 只分库,不分表,并且主从读写分离范例
    《风控模型—WOE与IV指标的深入理解应用》
    《风控模型—群体稳定性指标(PSI)深入理解应用》
  • 原文地址:https://www.cnblogs.com/diverman/p/8338155.html
Copyright © 2011-2022 走看看