JavaScript之【DOM编程案例】

innerHTML和innerText操作div和span

1、innerHTML会执行HTML代码,而innerText不会执行HTML代码,这两个都是属性。

使用例子:

(1)通过运行结果可以看到,innerText后的字符串是纯字符串,不会被当做HTML代码执行

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #div1{
            background-color: aqua;
            width: 300px;
            height: 300px;
            border: 1px black solid;
            position: absolute;
            top: 100px;
            left: 100px;
        }
    </style>
</head>
<body>
    <script type="text/javascript">
        window.onload = function(){
            var btnEml = document.getElementById("btn");
            btnEml.onclick = function(){
                // 设置div的内容
                // 第一步:获取div对象
                var divElt = document.getElementById("div1");
                // 第二步:使用innerHTML属性来设置元素内部内容
                divElt.innerHTML = "<font color='color'>用户名不能为空</font>";
                // 第二步:使用innerText属性来设置元素内部内容
                divElt.innerText = "<font color='color'>用户名不能为空</font>";
            }
        }
    </script>

    <input type="button" id="btn" value="设置div中的内容"/>

    <div id="div1"></div>
</body>

正则表达式

什么是正则表达式

1、正则表达式:Regular Expression。

2、正则表达式主要用在字符串格式匹配。

常见的正则表达式符号

常见的元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

常见的重复字符

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

 常见的反义字符

代码/语法说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

 简单的正则表达式

正则表达式中的小括号()优先级较高

[1-9] 表示1到9的任意1个数字(次数是1次)

[A-Za-z0-9]表示A-Za-z0-9中的任意1个字符

[A-Za-z0-9-]表示A-Za-z0-9、-中的任意一个字符

| 表示或

例子:QQ号的正则表达式:^[1-9][0-9]{4,}$

创建正则表达式的方法

第一种:

var regExp = /正则表达式/flags;

第二种:使用内置支持类RegExp

var regExp = new RegExp("正则表达式","flags");

正则表达式对象的test()方法:正则表达式.test(用户填写的字符串);返回值为布尔类型,true表示字符串匹配成功,false表示字符串匹配失败。

关于flags:

        g:全局匹配

        i:忽略大小写

        m:多行搜索(ES规范制定之后才支持m),如果前面正则表达式,m不能使用,如果是字符串才能使用。

正则表达式使用示例

<body>
    <script type="text/javascript">
        window.onload = function(){
            document.getElementById("btn").onclick = function () {
                var email = document.getElementById("email").value;
                var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                var isRight = emailRegExp.test(email);
                if(isRight){
                    document.getElementById("emailError").innerText = "邮箱地址合法";
                }else{
                    document.getElementById("emailError").innerText = "邮箱地址不合法";
                }
            }
            // 给文本绑定focus
            document.getElementById("email").onfocus = function(){
                document.getElementById("emailError").innerText = "";
            }
        }
    </script>

    <input type="text" id="email"/>

    <span id="emailError" style="color: red; font-size: 12px;"></span>
    <br>
    <input type="button" value="验证邮箱" id="btn"/>
</body>

扩展字符串的trim函数

作用:去除前后空白(即空格)

示例:var username = document.getElementById("username").value;

           var username = username.trim();

注意:因为IE8不支持trim()函数,解决方法:可以自己对String类扩展一个全新的trim()函数

实现方法:

String.prototype.trim = function(){

        return this.replace(/^\s+/,"").replace(/\s+$/,"");

表单验证 

功能要求

(1)用户名不能为空

(2)用户名必须在6-14位之间

(3)用户名只能由数字和字母组成,不能含有其他符号(正则表达式)

(4)密码和确认密码一致,邮箱地址合法

(5)统一失去焦点验证

(6)错误提示信息统一在span标签中提示,并且要求字体为12号,红色

(7)文本框再次获得焦点后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value

(8)最终表单中所有项均合法方可提交

实现代码

<body>
    <script type="text/javascript">
        /*  (1)用户名不能为空

            (2)用户名必须在6-14位之间

            (3)用户名只能由数字和字母组成,不能含有其他符号(正则表达式)

            (4)密码和确认密码一致,邮箱地址合法

            (5)统一失去焦点验证

            (6)错误提示信息统一在span标签中提示,并且要求字体为12号,红色

            (7)文本框再次获得焦点后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value

            (8)最终表单中所有项均合法方可提交
         */
        // 页面加载完毕开始执行function内代码
        window.onload = function(){
            // 验证用户名
            document.getElementById("username").onblur = function(){
                // 获取用户名
                var username = document.getElementById("username").value;
                // 去除用户名前后空白
                username = username.trim();

                if(username === ""){
                    document.getElementById("usernameError").innerText = "用户名不能为空!"
                }else{
                    if(username.length < 6 || username.length > 14){
                        document.getElementById("usernameError").innerText = "用户名必须在6-14位之间"
                    }else{
                        var usernameRegExp = /^[A-Za-z0-9]+$/
                        if(usernameRegExp.test(username)){
                            document.getElementById("usernameError").innerText = ""
                        }else {
                            document.getElementById("usernameError").innerText = "用户名只能由数字和字母组成"
                        }
                    }
                }
            }

            // 验证密码和确认密码
            document.getElementById("confirmPwd").onblur = function(){
                if(document.getElementById("password").value != document.getElementById("confirmPwd").value){
                    document.getElementById("confirmPwdError").innerText = "密码不一致!"
                }
            }

            // 验证邮箱
            document.getElementById("email").onblur = function(){
                var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                if(!emailRegExp.test(document.getElementById("email").value)){
                    document.getElementById("emailError").innerText = "邮箱格式错误!";
                }else{
                    document.getElementById("emailError").innerText = "";
                }
            }

            // 验证手机号
            document.getElementById("phoneNumber").onblur = function(){
                // 手机号的正则表达式
                var phoneRegExp = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
                // test验证
                if(!phoneRegExp.test(document.getElementById("phoneNumber").value)) {
                    document.getElementById("phoneNumberError").innerText = "手机号格式错误!";
                }else{
                    document.getElementById("phoneNumberError").innerText = "";
                }
            }
            // 提交表单
            document.getElementById("sub").onclick = function(){
                document.getElementById("username").focus();
                document.getElementById("username").blur();
                document.getElementById("confirmPwd").focus();
                document.getElementById("confirmPwd").blur();
                document.getElementById("email").focus();
                document.getElementById("email").blur();
                document.getElementById("phoneNumber").focus();
                document.getElementById("phoneNumber").blur();
                if(document.getElementById("usernameError").innerText == "" && document.getElementById("confirmPwdError").innerText == ""
                    && document.getElementById("phoneNumberError").innerText == "" && document.getElementById("emailError").innerText == ""){
                    document.getElementById("userForm").submit();
                }else{
                    alert("注册信息有误!");
                }
            }
        }
    </script>

    <form method="get" id="userForm">
        <table style="text-align: right;">
            <tr>
                <td>
                    用户名:
                </td>
                <td>
                    <input type="text" name="username" id="username"/>
                </td>
                <td style="text-align: left;">
                    <span id="usernameError" style="color: red; font-size: 12px;"></span>
                </td>
            </tr>
            <tr>
                <td>
                    密码:
                </td>
                <td>
                    <input type="password" name="password" id="password"/>
                </td>
            </tr>
            <tr>
                <td>
                    确认密码:
                </td>
                <td>
                    <input type="password" id="confirmPwd"/>
                </td>
                <td style="text-align: left;">
                    <span id="confirmPwdError" style="color: red; font-size: 12px; "></span>
                </td>
            </tr>
            <tr>
                <td>
                    邮箱:
                </td>
                <td>
                    <input type="text" id="email" name="email"/>
                </td>
                <td style="text-align: left;">
                    <span id="emailError" style="color: red; font-size: 12px;"></span>
                </td>
            </tr>
            <tr>
                <td>
                    手机号:
                </td>
                <td>
                    <input type="text" id="phoneNumber" name="phoneNumber"/>
                </td>
                <td style="text-align: left;">
                    <span id="phoneNumberError" style="color: red; font-size: 12px;"></span>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: center">
                    <input type="button" value="提交" id="sub"/>
                </td>
            </tr>
        </table>
    </form>
</body>

复选框的全选和取消全选

示例代码如下:

<body>
    <script type="text/javascript">
        window.onload = function(){
            // 获得复选框数组
            var habit = document.getElementsByName("habit");
            var firstChk = document.getElementById("firstChk");
            firstChk.onclick = function(){
                for(var i in habit){
                    habit[i].checked = firstChk.checked;
                }
            }
            // 点击复选框时判定是否全选
            var all = habit.length;
            for(var i in habit){
                habit[i].onclick = function(){
                    var checkedCount = 0;
                    for(var i in habit){
                        if(habit[i].checked){
                            checkedCount++;
                        }
                    }
                    firstChk.checked = (all == checkedCount);
                }
            }
        }
    </script>
    <input type="checkbox" id="firstChk"/><br>
    <input type="checkbox" name="habit" value="eat" />吃<br>
    <input type="checkbox" name="habit" value="drink" />喝<br>
    <input type="checkbox" name="habit" value="play" />玩<br>
</body>

获取下拉列表选中选的value

第一种方法:onchange属性

<body>
    <select onchange="alert(this.value)" id="provinceList">
        <option value="">--请选择省份--</option>
        <option value="001">河南省</option>
        <option value="002">河北省</option>
        <option value="003">上海市</option>
        <option value="004">山东省</option>
    </select>
</body>

第二种方法:JS编写

<body>
    <script type="text/javascript">
        window.onload = function(){
            var provinceListElt = document.getElementById("provinceList");
            provinceListElt.onchange = function(){
                alert(provinceListElt.value)
            }
        }
    </script>
    <select id="provinceList">
        <option value="">--请选择省份--</option>
        <option value="001">河南省</option>
        <option value="002">河北省</option>
        <option value="003">上海市</option>
        <option value="004">山东省</option>
    </select>
</body>

显示网页时钟【周期函数setInterval】

setInterval函数和clearInterval()函数

(1)setInterval(code,millisec[,"lang"])

注:

code:要调用的函数或要执行的代码块

millisec:周期性执行或调用code之间的时间间隔,以毫秒计

(2)clearInterval()

注:该函数用于接受setInterval的返回值,并将其执行关闭

显示网页时钟实现代码

<body>
    <script type="text/javascript">
        function displayTime(){
            var time = new Date();
            var strTime = time.toLocaleString();
            document.getElementById("timeDiv").innerHTML = strTime;
        }

        // 每隔一秒调用displayTime()函数
        function start(){
            interval = window.setInterval("displayTime()",1000);
        }

        // 停止调用setInterval函数
        function stop(){
            window.clearInterval(interval);
        }
    </script>

    <input type="button" value="显示当前系统时间" onclick="start();"/>
    <input type="button" value="停止当前系统时间" onclick="stop();"/>
    <div id="timeDiv"></div>
</body>

设置table的tbody

示例代码

<body>
    <script type="text/javascript">
        var classInfo = {
            "total" : 3,
            "student" : [
                {"name" : "张三","birth":"1980-10-20"},
                {"name" : "李四","birth":"1980-10-20"},
                {"name" : "王五","birth":"1980-10-20"}
            ]
        };

        window.onload = function(){
            document.getElementById("displayInfo").onclick = function(){
                var student = classInfo.student;
                var html = "";
                for(var i in student){
                    var stu = student[i];
                    html += "<tr>";
                    html += "<td>" + stu.name + "</td>";
                    html += "<td>" + stu.birth + "</td>";
                    html += "</tr>";
                }
                document.getElementById("emptybody").innerHTML = html;
            }
        }
    </script>

    <input type="button" id="displayInfo" value="显示信息"/>
    <h2>学生信息列表</h2>
    <hr>
    <table style="border:1px;width: 50%;">
        <tr>
            <th>学生姓名</th>
            <th>学生生日</th>
        </tr>
        <tbody id="emptybody"></tbody>
    </table>
</body>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值