JS的简单案例(表格的动态操作,表单的校验)

案例:动态的对表格进行增加与删除

    * 分析:
                * 添加:
                    1. 给添加按钮绑定单击事件
                    2. 获取文本框的内容
                    3. 创建td,设置td的文本为文本框的内容。
                    4. 创建tr
                    5. 将td添加到tr中
                    6. 获取table,将tr添加到table中
                * 删除:
                    1.确定点击的是哪一个超链接
                        <a href="javascript:void(0);" onclick="delTr(this);" >删除</a>
                    2.怎么删除?
                        removeChild():通过父节点删除子节点

    * 思路:
        1,给某个元素添加子节点:
             A,先创建子节点   B,获得父节点  C,通过父节点添加子节点   appendChild(子节点);
        2, 想删除某个节点:
             A,先得到父节点  parentNode  B,再根据父节点删除子节点   removeChild(子节点)
    * 代码
     <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>动态网格</title>
            <style>
                div{
                    text-align: center;
                    margin: 50px;
                }


                #sid{
                    margin-top: 70px;
                }
                table{
                    border: 1px solid;
                    margin: auto;
                    width: 500px;
                }

                td,th{
                    text-align: center;
                    border: 1px solid;
                }

            </style>
        </head>
        <body>
            <div class="d1">
                <input type="text" placeholder="请输入编号" id="sid">
                <input type="text" placeholder="请输入姓名" id="sname">
                <input type="text" placeholder="请输入性别" id="sgender">
                <input type="button" id="btn" value="添加">
            </div>

                <table id="table">
                    <tr>
                        <td>编号</td>
                        <td>姓名</td>
                        <td>性别</td>
                        <td>操作</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>令狐冲</td>
                        <td>男</td>
                        <td><a href="#" onclick="del(this);">删除</a></td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>任我行</td>
                        <td>男</td>
                        <td><a href="#" onclick="del(this);">删除</a></td>
                    </tr>
                    <tr>
                        <td>3</td>
                        <td>岳不群</td>
                        <td>?</td>
                        <td><a href="#" onclick="del(this);">删除</a></td>
                    </tr>
                </table>

            <script>
                //获取点击事件
                var btn = document.getElementById("btn");
                //使用Node节点完成对table的动态添加的操作
                /*btn.onclick = function () {
                    //获取输入的值
                    var sid = document.getElementById("sid").value;
                    var sname = document.getElementById("sname").value;
                    var sgender = document.getElementById("sgender").value;

                    //获取表格
                    var table = document.getElementById("table");
                    //创建tr
                    var tr =  document.createElement("tr");
                    //创建td
                    var td_id = document.createElement("td");
                    var text_id = document.createTextNode(sid);
                    td_id.appendChild(text_id);
                    tr.appendChild(td_id);

                    //创建td
                    var td_name = document.createElement("td");
                    var text_name = document.createTextNode(sname);
                    td_name.appendChild(text_name);
                    tr.appendChild(td_name);

                    //创建td
                    var td_gender = document.createElement("td");
                    var text_gender = document.createTextNode(sgender);
                    td_gender.appendChild(text_gender);
                    tr.appendChild(td_gender);

                    //创建td
                    var td_option = document.createElement("td");
                    //创建a
                    var a = document.createElement("a");
                    a.setAttribute("href","#")
                    a.setAttribute("onclick","del(this)");
                    var text_a = document.createTextNode("删除");
                    a.appendChild(text_a);
                    td_option.appendChild(a);
                    tr.appendChild(td_option);

                    table.appendChild(tr);

                }*/
                btn.onclick = function () {
                    //获取输入的值
                    var sid = document.getElementById("sid").value;
                    var sname = document.getElementById("sname").value;
                    var sgender = document.getElementById("sgender").value;
                    //使用innerHTML来实现对案例的简化
                var table = document.getElementById("table");
                table.innerHTML+= "<tr>\n" +
                    "                <td>"+sid+"</td>\n" +
                    "                <td>"+sname+"</td>\n" +
                    "                <td>"+sgender+"</td>\n" +
                    "                <td><a href=\"#\" onclick=\"del(this);\">删除</a></td>\n" +
                    "            </tr>"
                };
                //删除一行tr
                function del(obj) {
                    var table = obj.parentNode.parentNode.parentNode;
                    var tr = obj.parentNode.parentNode;
                    table.removeChild(tr);
                }

            </script>
        </body>
        </html>

案例:对表格进行全选,反选,全不选操作

    * 分析
        1.全选
                  1.绑定点击事件
                  2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                  3.遍历数组,对td进行checked的属性的更改(全部都选择) 
        2.全不选
                  1.绑定点击事件
                  2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                  3.遍历数组,对td进行checked的属性的更改(全部都不选择)
        3.反选  
                  1.绑定点击事件
                  2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                  3.遍历数组,对td进行checked的属性的更改(改为原来的取反)
    * 代码
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>表格全选</title>
            <style>
                table {
                    border: 1px solid;
                    width: 500px;
                    margin-left: 30%;
                }

                td, th {
                    text-align: center;
                    border: 1px solid;
                }

                div {
                    margin-top: 10px;
                    margin-left: 30%;
                }

                .in {
                    background-color: pink;
                }

                .out {
                    background-color: white;
                }
            </style>

            <script>
                //定义窗口加载完毕的事件
                window.onload = function () {
                    //全选
                    /*
                        分析: 1.绑定点击事件
                            2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                            3.遍历数组,对td进行checked的属性的更改(全部都选择)
                    */
                    // 1.绑定点击事件
                    var selectAll = document.getElementById("selectAll");
                    selectAll.onclick = function () {
                        //2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                        var trs = document.getElementsByClassName("cb");
                        //3.遍历数组,对td进行checked的属性的更改(全部都选择)
                        for (var i = 0; i < trs.length; i++) {
                            trs[i].checked = true;
                        }
                    };

                    //全不选
                    /*
                        分析: 1.绑定点击事件
                            2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                            3.遍历数组,对td进行checked的属性的更改(全部都不选择)
                    */
                    // 1.绑定点击事件
                    var unselectAll = document.getElementById("unSelectAll");
                    unselectAll.onclick = function () {
                        //2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                        var trs = document.getElementsByClassName("cb");
                        //3.遍历数组,对td进行checked的属性的更改(全部都不选择)
                        for (var i = 0; i < trs.length; i++) {
                            trs[i].checked = false;
                        }
                    };

                    //反选
                    /*
                        分析: 1.绑定点击事件
                            2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                            3.遍历数组,对td进行checked的属性的更改(改为原来的取反)
                    */
                    // 1.绑定点击事件
                    var selectRev = document.getElementById("selectRev");
                    selectRev.onclick = function () {
                        //2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                        var trs = document.getElementsByClassName("cb");
                        //3.遍历数组,对td进行checked的属性的更改(全部都取反)
                        for (var i = 0; i < trs.length; i++) {
                            trs[i].checked = !trs[i].checked;
                        }
                    };

                    //第一个选择,其他的也会跟着选择
                    /*
                        分析:
                            1.获取 firstCb
                            2.绑定点击事件
                            2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                            3.遍历数组,对td进行checked的属性的更改(参考第一个的cb值)
                    */
                    // 1.绑定点击事件
                    var firstCb = document.getElementById("firstCb");
                    //firstCb.onchange = function () {
                    firstCb.onclick = function () {
                        //2.通过document.getElementByClassName("cb")来获取所有的check一列的对象
                        var trs = document.getElementsByClassName("cb");
                        //3.遍历数组,对td进行checked的属性的更改(参考第一个checked的状态)
                        for (var i = 1; i < trs.length; i++) {
                            trs[i].checked = firstCb.checked;
                        }
                    };


                    //定义鼠标的进入和出去事件
                    /*
                        分析:
                            1.通过document.getElementByTagName("cb")来获取所有的tr对象数组
                            2.遍历数组
                            3.对每一个tr进行鼠标事件的绑定
                    */

                    //1.通过document.getElementByTagName("tr")来获取所有的tr对象数组
                    var trs = document.getElementsByTagName("tr");
                    //2.遍历数组
                    for (var i = 0; i < trs.length; i++) {
                        //3.对每一个tr进行鼠标事件的绑定
                        trs[i].onmouseover = function () {
                            this.className = "in";
                        };
                        trs[i].onmouseout = function () {
                            this.className = "out";
                        };

                    }

                }
            </script>

        </head>
        <body>

        <table>
            <caption>学生信息表</caption>
            <tr>
                <th><input type="checkbox" class="cb" id="firstCb">全选</th>
                <th>编号</th>
                <th>姓名</th>
                <th>性别</th>
                <th>操作</th>
            </tr>

            <tr>
                <td><input type="checkbox" class="cb"></td>
                <td>1</td>
                <td>令狐冲</td>
                <td>男</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>

            <tr>
                <td><input type="checkbox" class="cb"></td>
                <td>2</td>
                <td>任我行</td>
                <td>男</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>

            <tr>
                <td><input type="checkbox" class="cb"></td>
                <td>3</td>
                <td>岳不群</td>
                <td>?</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>

        </table>
        <div>
            <input type="button" id="selectAll" value="全选">
            <input type="button" id="unSelectAll" value="全不选">
            <input type="button" id="selectRev" value="反选">
        </div>
        </body>
        </html>

案例:使用js正则对页面进行表单的验证

    * 分析
        1.写好校验每个的input的方法(方法内部使用正则来判断)
            checkUsername()
            checkPassword() 
            checkEmail() 
            checkName() 
            checkTel()
        2.在form.onsubmit中调用上面写的校验方法
            document.getElementById("form1").onsubmit = function () {
                        return checkUsername() && checkPassword() && checkEmail() &&checkName() && checkTel();
                    }
    * 代码
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>注册页面</title>
            <style>
                * {
                    margin: 0px;
                    padding: 0px;
                    box-sizing: border-box;
                }

                body {
                    background: url("img/register_bg.png") no-repeat center;
                    padding-top: 25px;
                }

                .rg_layout {
                    width: 900px;
                    height: 500px;
                    border: 8px solid #EEEEEE;
                    background-color: white;
                    /*让div水平居中*/
                    margin: auto;
                }

                .rg_left {
                    /*border: 1px solid red;*/
                    float: left;
                    margin: 15px;
                }

                .rg_left > p:first-child {
                    color: #FFD026;
                    font-size: 20px;
                }

                .rg_left > p:last-child {
                    color: #A6A6A6;
                    font-size: 20px;

                }

                .rg_center {
                    float: left;
                    /* border: 1px solid red;*/

                }

                .rg_right {
                    /*border: 1px solid red;*/
                    float: right;
                    margin: 15px;
                }

                .rg_right > p:first-child {
                    font-size: 15px;

                }

                .rg_right p a {
                    color: pink;
                }

                .td_left {
                    width: 100px;
                    text-align: right;
                    height: 45px;
                }

                .td_right {
                    padding-left: 50px;
                }

                #username, #password, #email, #name, #tel, #birthday, #checkcode {
                    width: 251px;
                    height: 32px;
                    border: 1px solid #A6A6A6;
                    /*设置边框圆角*/
                    border-radius: 5px;
                    padding-left: 10px;
                }

                #checkcode {
                    width: 110px;
                }

                #img_check {
                    height: 32px;
                    vertical-align: middle;
                }

                #btn_sub {
                    width: 150px;
                    height: 40px;
                    background-color: #FFD026;
                    border: 1px solid #FFD026;
                }

                #sunbtn {
                    padding-left: 150px;
                }

            </style>

        </head>
        <body>

        <div class="rg_layout">
            <div class="rg_left">
                <p>新用户注册</p>
                <p>USER REGISTER</p>

            </div>

            <div class="rg_center">
                <div class="rg_form">
                    <!--定义表单 form-->
                    <form action="javascript:void(0);" method="get" id="form1">
                        <table>
                            <tr>
                                <td class="td_left"><label for="username">用户名</label></td>
                                <td class="td_right">
                                    <input type="text" name="username" id="username" placeholder="请输入用户名">
                                    <span id="user_name"></span>
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="password">密码</label></td>
                                <td class="td_right">
                                    <input type="password" name="password" id="password" placeholder="请输入密码">
                                    <span id="password_1"></span>
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="email">Email</label></td>
                                <td class="td_right">
                                    <input type="email" name="email" id="email" placeholder="请输入邮箱">
                                    <span id="email_1"></span>
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="name">姓名</label></td>
                                <td class="td_right">
                                    <input type="text" name="name" id="name" placeholder="请输入姓名">
                                    <span id="name_1"></span>
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="tel">手机号</label></td>
                                <td class="td_right">
                                    <input type="text" name="tel" id="tel" placeholder="请输入手机号">
                                    <span id="tel_1"></span>
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label>性别</label></td>
                                <td class="td_right">
                                    <input type="radio" name="gender" value="male" checked> 男
                                    <input type="radio" name="gender" value="female"> 女
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="birthday">出生日期</label></td>
                                <td class="td_right"><input type="date" name="birthday" id="birthday" placeholder="请输入出生日期">
                                </td>
                            </tr>

                            <tr>
                                <td class="td_left"><label for="checkcode">验证码</label></td>
                                <td class="td_right"><input type="text" name="checkcode" id="checkcode" placeholder="请输入验证码">
                                    <img id="img_check" src="img/verify_code.jpg">
                                </td>
                            </tr>


                            <tr>
                                <td colspan="2" id="sunbtn"><input type="submit" id="btn_sub" value="注册"></td>
                            </tr>
                        </table>

                    </form>


                </div>

            </div>

            <div class="rg_right">
                <p>已有账号?<a href="#">立即登录</a></p>
            </div>


        </div>

        <script>
            window.onload = function () {
                document.getElementById("username").onblur = checkUsername;
                document.getElementById("password").onblur = checkPassword;
                document.getElementById("email").onblur = checkEmail;
                document.getElementById("name").onblur = checkName;
                document.getElementById("tel").onblur = checkTel;

                document.getElementById("form1").onsubmit = function () {
                    return checkUsername() && checkPassword() && checkEmail() &&checkName() && checkTel();
                }
            };
            //校验username
            function checkUsername() {
                var username = document.getElementById("username").value;
                var reg = /^\w{3,12}$/;
                var flag = reg.test(username);
                var user_name = document.getElementById("user_name");
                if (flag){
                    user_name.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
                }else {
                    user_name.innerHTML = "<font color='red'>用户名格式不正确</font>"
                }
                return flag;
            };
            //校验password
            function checkPassword(){
                var password = document.getElementById("password").value;
                var reg = /^\w{3,12}$/;
                var flag = reg.test(password);
                var pass_word = document.getElementById("password_1");
                if (flag){
                    pass_word.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
                }else {
                    pass_word.innerHTML = "<font color='red'>密码格式不正确</font>"
                }
                return flag;
            };
            //校验email
            function checkEmail(){
                var email = document.getElementById("email").value;
                var reg = /^\w{3,13}@\w{1,3}.\w{2,3}$/;
                var flag = reg.test(email);
                var email_1 = document.getElementById("email_1");
                if (flag){
                    email_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
                }else {
                    email_1.innerHTML = "<font color='red'>邮箱格式不正确</font>"
                }
                return flag;
            };
            //校验name
            function checkName(){
                var name = document.getElementById("name").value;
                //汉字的正则
                var reg = /^[\u4e00-\u9fa5]{2,15}$/;
                var flag = reg.test(name);
                var name_1 = document.getElementById("name_1");
                if (flag){
                    name_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
                }else {
                    name_1.innerHTML = "<font color='red'>姓名格式不正确</font>"
                }
                return flag;
            };
            //校验手机号
            function checkTel(){
                var tel = document.getElementById("tel").value;
                var reg = /^1[3456789]\d{9}$/;
                var flag = reg.test(tel);
                var tel_1 = document.getElementById("tel_1");
                if (flag){
                    tel_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
                }else {
                    tel_1.innerHTML = "<font color='red'>手机号格式不正确</font>"
                }
                return flag;
            };
            </script>
            </body>
            </html>

猜你喜欢

转载自blog.csdn.net/qq_35472880/article/details/82467969