代码还有哪个方面优化的地方吗?

来源:4-8 编程练习

小贱丶

2019-09-23 11:50:21

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

<title>Document</title>

<style>

*{

padding: 0;

margin: 0;

}

.box{

width: auto;

min-height:600px;

}

.header{

min-width: 960px;

height: 50px;

background-color: #0088CC;

}

.header p{

font-size: 18px;

text-align: left;

line-height: 50px;

color: #fff;

margin-left: 10px;

}

.screen-1{

background-color: #5e5e5e;

min-height:600px;

text-align: center;

}

.screen-1 #form{

margin: 0 auto;

padding-top: 100px;

width: 1000px;

height: 600px;

}

.screen-1 #form p .show,.screen-1 #form p .hidden,.screen-1 #form p .hiddenSex{

display: inline-block;

width: 400px;

height: 40px;

line-height: 40px;

font-size: 14px;

margin-right: 10px;

}

.screen-1 #form p .hidden{vertical-align: middle;padding-left: 5px;}/*设置右侧元素默认是居中对齐,使其不会与盒子冲突*/

.screen-1 #form p .hiddenSex{padding-left: 5px;}

.screen-1 #form p .show{text-align: right;}

.screen-1 #form p .hidden,.screen-1 #form p .hiddenSex{text-align:left;font-size:12px;color:red;}

.screen-1 #form #btn{

margin-top:50px;

width:80px;

height: 40px;

line-height: 40px;

font-size:15px;

background-color:pink;

border: 1px solid #000;

border-radius:5px;

color:#fff;

}

.screen-1 #form input,.screen-1 #form select{

width: 160px;

height: 25px;}

.screen-1 #form select{

text-align: center;}

</style>

</head>

<body>

<div class="box">

<header class="header">

<p>用户注册</p>

</header>

<div class="screen-1">

<form id="form">

<p><span class="show">用户名:</span><input type="text" id="userId" title="0"><span class="hidden" id="hiddenShow"></span></p>

<p><span class="show">登陆密码:</span><input type="password" id="userPassword" title="1"><span class="hidden" id="hiddenPassword"></span></p>

<p><span class="show">确认密码:</span><input type="password" id="userRegPassword" title="2"><span class="hidden" id="regPassword"></span></p>

<p><span class="show">姓名:</span><input type="text" id="userName" title="3"><span class="hidden" id="hiddenName"></span></p>

<p><span class="show">性别:</span><select id="userSex">

<option value="man">男</option>

<option value="women">女</option>

</select><span class="hiddenSex" id="hiddenSex"></span></p>

<p><span class="show">身份证号码:</span><input type="text" id="userNumber" title="4"><span class="hidden" id="hiddenUserNum"></span></p>

<p><span class="show">邮箱:</span><input type="email" id="userEmail" title="5"><span class="hidden" id="hiddenUserEmail"></span></p>

<p><span class="show">手机号码:</span><input type="text" id="userPhone" title="6"><span class="hidden" id="hiddenUserPhone"></span></p>

<button type="button" value="提交" id="btn">提交</button>

</form>

</div>

</div>


<script>

var totElems = {

        userId:document.getElementById('userId'),

        userPassword:document.getElementById('userPassword'),

        userRegPassword:document.getElementById('userRegPassword'),

        userName:document.getElementById('userName'),

        userSex:document.getElementById('userSex'),

        userNumber:document.getElementById('userNumber'),

        userEmail:document.getElementById('userEmail'),

        userPhone:document.getElementById('userPhone'),

userInputs:document.getElementsByTagName('input'),

        btn:document.getElementById('btn'),

hiddenSpan:document.getElementsByClassName('hidden')

};


var pattern = {

        userId:/^[a-zA-Z]\w{5,19}/,

        userPassword:/^\S{6,18}$/,

        userName:/^[\u4e00-\u9fa5]{2,4}$/,

        userNumber:/^[1-9]{1}\d{13}[\d|x]$|^[1-9]{1}\d{16}[\d|x]$/,

        userEmail:/^[a-z0-9]+(?:[._-][a-z0-9]+)*@[a-z0-9]+(?:[._-][a-z0-9]+)*\.[a-z]{2,4}$/i,

        userPhone:/^(13)[0-9]{9}$|(147)\d{8}$|(15)[0-3,5-9]{1}\d{8}$|(18)[0,2,5-9]{1}\d{8}$/

};

    var wrongText = {

        userId :'请输入6-20位字母、数字或“_”,以字母开头',

        userPassword:"请输入6-18位,中间不能有空格",

        userRegPassword:"两次输入密码不一致",

        userName:"请输入两位到四位的中文汉字",

        userNumber:"15位或者18位的数字,最后一位可为x",

        userEmail:"请输入正确的邮箱地址",

        userPhone:"请输入正确的手机号码"

    };

var sum = 0;

    //循环函数

    function each(elems,fn){

        for(var i = 0;i<elems.length;i++){

            fn(i,elems[i]);//每个elems下的元素,都执行一次fn函数

        }

    }

    //提交按钮点击后进行跑验证

    totElems.btn.onclick = function() {

        each(totElems.hiddenSpan,function(index,elem){

            if(elem.innerHTML === "OK"){sum++;}

        });

    if(sum == totElems.hiddenSpan.length){

        alert("验证成功");

    }

    else{alert("验证失败");}

    };

    //循环遍历input,添加事件

    (function eachInput(){

        // console.log(totELems.userId);

        for(var i = 0;i<totElems.userInputs.length;i++){

            console.log(totElems.userInputs[i]);

            // test(totELems.userInputs[i]);

            console.log(totElems.userInputs[i].id);

            decide(totElems.userInputs[i].id);

        }

        // console.log(totELems.userPassword);

    })();

    //判断

    function decide(name){

        // totELems[name].onblur = resultOut(name,testif(name));

        totElems[name].onblur = function(){

            if(name == 'userRegPassword'){

                if(totElems.userPassword.value == totElems.userRegPassword.value && totElems[name].value != ""){

                    console.log('OK');

                    resultOut(name,'OK');

                }

                else if(totElems[name].value == ""){resultOut(name,'');}

                else{

                    console.log('Not-OK');

                    resultOut(name,wrongResult(name));

                }

            }

            else if(pattern[name].test(totElems[name].value)){

                console.log('OK');

                resultOut(name,'OK');

                // resultOut(name,"OK");

            }

            else{

                console.log('Not-OK');

                // resultOut(name,'请输入6-20位字母、数字或“_”,以字母开头');

                resultOut(name,wrongResult(name));

                // resultOut(name,"");

            }

        }

    }

    //输出不通过语句

    function wrongResult(name){

        // console.log(wrongText[name]);

        return wrongText[name];

    }


    //输出检测值

    function resultOut(elems,val){

        var Num = totElems[elems].title;

        console.log(totElems.hiddenSpan[Num].innerHTML = val);

        // console.log(totELems[elems].title);

        // console.log(totELems.hiddenSpan[0].innerHTML = val);

        // totElems.hiddenSpan[elems.title].innerHTMl = val;

    }

   

   

</script>

</body>

</html>


如上,想知道还有哪里能继续优化改进的

写回答

1回答

好帮手慕码

2019-09-23

同学你好!

代码效果实现的挺好的,无需优化了哟。

如果帮到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 14456 问题

查看课程