zoukankan      html  css  js  c++  java
  • 4、BOM编程/正则表达式

    1.    BOM编程

    1.1. BOM编程基础

        全称 Browser Object Model,浏览器对象模型。

        JavaScript是由浏览器中内置的javascript脚本解释器程序来执行javascript脚本语言的。

        为了便于对浏览器的操作,javascript封装了对浏览器的各个对象使得开发者可以方便的操作浏览器。

    1.2. BOM对象:

    1.3. window 对象

           Window 对象是 JavaScript 层级中的顶层对象。

           Window 对象代表一个浏览器窗口或一个框架。

           Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。

    1.3.1. window中的方法

        document   对 Document 对象的只读引用

        location   用于窗口或框架的 Location 对象

        history    对 History 对象的只读引用。 

    document.tilte    设置网页的标题

       moveto()  将窗口左上角的屏幕位置移动到指定的 xy 位置。

        moveby()    相对于目前的位置移动。

    resizeTo()   调整当前浏览器的窗口。
     

        open()     打开新窗口显示指定的URL(有的浏览器中是打一个新的选项卡)

        setTimeout(vCode, iMilliSeconds)       超时后执行代码。

    setInterval(vCode, iMilliSeconds)      定时执行代码,第一次也是先待,到时再执行。

    2.    事件

    a) 事件说明

        基本上所有的HTML元素中都可以指定事件属性。

        每个元素支持什么样事件应查询文档。

        所有的事件属性都是以on开头,后面的是事件的触发方式,如:

           onclick,表示单击

           onkeydown,表示键按下

                  ...

    b) 常用的事件类型:

        鼠标点击相关:

           onclick 在用户用鼠标左键单击对象时触发。

           ondblclick 当用户双击对象时触发。

           onmousedown 当用户用任何鼠标按钮单击对象时触发。

           onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。

        鼠标移动相关:

           onmouseout  当用户将鼠标指针移出对象边界时触发。

           onmousemove 当用户将鼠标划过对象时触发。

        焦点相关的:

           onblur 在对象失去输入焦点时触发。

           onfocus 当对象获得焦点时触发。

        其他:

           onchange 当对象或选中区的内容改变时触发。

           onload 在浏览器完成对象的装载后立即触发。

           onsubmit 当表单将要被提交时触发。

    location 对象

    Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息。

    location中的重要方法:

        href属性   设置或获取整个 URL 为字符串。

        reload()   重新装入当前页面

    1.3.2. screen 对象

           Screen 对象是由 JavaScript runtime engine 自动创建的,包含有关客户机显示屏幕的信息。

    属性:

        availHeight   获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。   

        availWidth 获取系统屏幕的工作区域宽度,排除 Windows 任务栏。   

        height     获取屏幕的垂直分辨率。

        width      获取屏幕的水平分辨率。

               

    示例:

        document.write("屏幕工作区: " + screen.availHeight + ", " + screen.availWidth + "<br>");

        document.write("屏幕分辨率: " + screen.height + ", " + screen.width + "<br>");

    1.3.3. document对象

        该对象代表整个文档页面

    对象的集合:

        all     获取页面所有元素对象

        forms   获取页面所有表单对象

        images 获取页面所有图片对象

        links   获取所有超链接或area对象

    具体的内容会在学习DOM时学习。

    2.    DOM

    2.1. DOM简介

        全称Document Object Model,即文档对象模型。

        DOM描绘了一个层次化的树,允许开发人员添加、删除、修改页面的某一部分。

        浏览器在解析HTML页面标记的时候,其实不是按照一行一行读取并解析的,

           而是将HTML页面中的每一个标记按照顺序在内存中组建一颗DOM树,

           组建好之后,按照树的结构将页面显示在浏览器的窗口中。

    2.2. 节点层次

        HTML网页是可以看做是一个树状的结构,如下:

        html

         |-- head

         |     |-- title

         |     |-- meta

         |     ...

         |-- body

         |     |-- div

         |     |-- form

         |     |     |-- input

         |     |     |-- textarea

         ...   ...   ...

        这是一颗树,是由多个节点(Node)组成的,节点的类型有很多种。

        节点最多有一个父节点,可以有多个子节点。

    HTML DOM 定义了访问和操作HTML文档的标准方法。

        document

           代表当前页面的整个文档树。

        访问属性

           all

           forms

           images

           links

           body

        访问方法(最常用的DOM方法)

        <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script type="text/javascript">

    // 获取dom 树, 获取document 对象.

    var dom = window.document;

    // all 获取页面中所有的标签节点 ,注释和文档类型约束.

    function testAll() {

        var allArr = dom.all;

        alert(allArr.length);

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

           //获取节点名称

           alert(allArr[i].nodeName);

        }

    }

    // anchors 获取页面中的所有的锚连接.

    function testAnchors() {

        var anArr = dom.anchors;

        alert(anArr.length);

    }

    // froms  获取所有的form 表单对象

    function testForms() {

        var formArr = dom.forms;

        alert(formArr.length);

        alert(formArr[0].nodeName);

    }

    // images

    function testImages() {

        var imageArr = dom.images;

        alert(imageArr.length);

    }

    // links  获取页面的超链接.

    function testLinks() {

        var linkArr = dom.links;

        //alert(linkArr.length);

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

           //alert(linkArr[i].nodeName);

        }

        for (var i in linkArr) {

           alert(i);

        }

    }

    //testLinks();

    // 获取页面的Body

    var body = dom.body;

    alert(body.nodeName);

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>javascript</title>

    </head>

    <body onmousemove="test(this)">

        <img src="xxx" alt="这是一个美女"/>

           <img src="xxx" alt="这是一个美女"/>

           <img src="xxx" alt="这是一个美女"/>

           <a href="http://www.baidu.com">百度一下</a>

           <a href="http://www.google.com">百度两下</a>

           <a href="http://www.baigu.com">百谷一下</a>

           <a name="one"></a>

           <a name="two"></a>

           <form>

               <label>姓名:</label><!--默认不写type 就是文本输入框-->

               <input  type="text"/>

           </form>

    </body>

    </html>

    2.3. 获取节点对象案例

        document.getElementById("html元素的id")

        document.getElementsByTagName("标签名")

        document.getElementsByName("html元素的name") 

        示例:

           1,得到所有的div元素并显示信息(innerHTML)。

           2,得到所有div元素中id为"test"的结果。

    Var dom = window.document;

    function testByTagName() {

        var iptArr = dom.getElementsByTagName("input");

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

           alert(iptArr[i].value);

        }

    }

    // window 对象提供了一个事件, onload 事件 onload(页面加载完毕执行该代码) 是一个事件, 给事件一个方法,

    //window.onload = testByTagName;

    //2,得到所有标签id为"username"的结果。获取旧value值并设置value值

    function testById() {

        var user = dom.getElementById("username");

        alert(user.value);

        user.value = "rose";

    }

    //testById();

    //3. 获取所有标签name 为like的元素.获取value值.

    function testByName() {

        var likeArr = dom.getElementsByName("like");

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

           alert(likeArr[i].value);

        }

    }

    testByName();

    2.3.1. 案例

    显示页面任意一个节点对象的所有子节点的nodeName、nodeType、nodeValue

    2.3.2. 属性操作练习

        1,写一个form,其中有多个checkbox。

        2,获取所有选中的数量。

        3,实现全选与全不选的效果。

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>无标题文档</title>

     

    <script type="text/javascript">

    function getSum()

    {

        /*

        需求:通过点击总金额按钮获取被选中的条目的金额的总和,并将总金额显示在按钮右边。

        思路:

        1,先获取所有的checkbox对象。

        2,对这些对象进行遍历。判断哪个对象被选中。

        3,对被选中对象的金额进行累加。

        4,显示在按钮右边。

        */

       

        var items = document.getElementsByName("item");

        var sum = 0;

        for(var x=0; x<items.length; x++)

        {

           if(items[x].checked)

           {

               sum += parseInt(items[x].value);

           }

        }

        var str = sum+"元";

        document.getElementById("sumid").innerHTML = str.fontcolor('red');

    }

     

    function checkAll(node)

    {

        /*

        需求:通过全选checkbox,将其他条目都选中。

        思路:

        只要将全选checkbox的checked状态赋值给其他的item checked状态即可。

       

       

        */

        //var allNode = document.getElementsByName("all")[index];

       

        var items = document.getElementsByName("item");

        for(var x=0; x<items.length; x++)

        {

           items[x].checked = node.checked;

        }

    }

    </script>

    </head>

     

    <body>

     

     

    <div>商品列表</div>

    <input type="checkbox" name="all" onclick="checkAll(this)"  /> 全选<br />

    <input type="checkbox" name="item" value="3000" />笔记本电脑3000元<br />

    <input type="checkbox" name="item" value="3000"  />笔记本电脑3000元<br />

    <input type="checkbox" name="item" value="3000"  />笔记本电脑3000元<br />

    <input type="checkbox" name="item" value="3000"  />笔记本电脑3000元<br />

    <input type="checkbox" name="item" value="3000"  />笔记本电脑3000元<br />

    <input type="checkbox" name="item" value="3000"  />笔记本电脑3000元<br />

    <input type="checkbox" name="all" onclick="checkAll(this)"  /> 全选<br />

    <input type="button" value="总金额:" onclick="getSum()" /><span id="sumid"></span>

     

     

    </body>

    </html>

     

    2.4. 通过节点关系查找节点

        从一个节点出发开始查找:

        parentNode 获取当前元素的父节点。

        childNodes 获取当前元素的所有下一级子元素。

        firstChild 获取当前节点的第一个子节点。

        lastChild  获取当前节点的最后一个子节点。

        nextSibling       获取当前节点的下一个节点。(兄节点)

        previousSibling   获取当前节点的上一个节点。(弟节点)

        示例1:

           firstChild属性最普遍的用法是访问某个元素的文本:

           var text=x.firstChild.nodeValue;

          

        示例2:

           parentNode 属性常被用来改变文档的结构。

           假设您希望从文档中删除带有 id 为 "maindiv" 的节点:

           var x=document.getElementById("maindiv");

           x.parentNode.removeChild(x);

    2.4.1. 获取节点对象的信息

        每个节点都包含的信息的,这些属性是:

        nodeType   节点类型

        nodeName   节点名称

        nodeValue  节点值

        nodeType

        nodeType 属性可返回节点的类型。

           ---------------------------------

           元素类型 节点类型

           ------------------

             元素      1      就是标签元素,例<div>..</div>

             文本      3      标签元素中的文本

             注释      8       表示为注释

        nodeName

           nodeName 属性含有某个节点的名称。

           --------------------------------

           元素节点的 nodeName 是标签名称

           属性节点的 nodeName 是属性名称

           文本节点的 nodeName 永远是 #text

           文档节点的 nodeName 永远是 #document

        nodeValue

           对于文本节点,nodeValue 属性是所包含的文本。

           对于属性节点,nodeValue 属性是属性值。

           对于注释节点,nodeValue 属性注释内容。

           nodeValue 属性对于文档节点和元素节点是不可用的。

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script type="text/javascript">

    //节点和节点之间的关系.

    //获取dom树

    var dom = window.document;

    //获取指定id 的标签节点.

    function test() {

        var form = dom.getElementById("form1");

        //获取父节点.

        //alert(form.parentNode.nodeName);

        // 获取子节点(Node 包含 文本,注释,标签)

        var childArr = form.childNodes;

        //alert(childArr.length);

        /*

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

        alert(childArr[i]);

        }

        */

        // 获取第一个孩子.

        var first = form.firstChild;

        //alert(first);

        //最后一个孩子.

        var last = form.lastChild;

        //alert(last);

        // 获取下兄弟(获取弟弟)

        var sibling = form.nextSibling;

        //alert(sibling.nodeName);

        // 获取大哥

        var previous = form.previousSibling;

        alert(previous.nodeName);

    }

    test();

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

     

    <title>javascript</title>

    </head>

    <body onmousemove="test(this)">

           <a>哈哈</a>

           <form id="form1">

               <label>姓名:</label>

               <input type="text" />

           </form>

    </body>

    </html>

    2.5. 节点操作

    2.5.1. 创建新节点

        document.createElement("标签名")    创建新元素节点

    elt.setAttribute("属性名", "属性值") 设置属性

        elt.appendChild(e)                     添加元素到elt中最后的位置

        elt.insertBefore(new, child);          添加到elt中,child之前。

                                               // 参数1:要插入的节点  参数

    2:插入目标元素的位置 

        elt.removeChild(eChild)                删除指定的子节点

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script>

    /*

    创建节点:

    document.createElement("标签名")    创建新元素节点

    elt.setAttribute("属性名", "属性值") 设置属性

    添加节点到文档树上:

    elt.appendChild(e)                     添加元素到elt中最后的位置  把元素添加最后一个子节点的后面。

    elt.insertBefore(new, child);          添加到elt中,child之前。

                                // 参数1:要插入的节点  参数2:插入目标元素的位置  

                                                    

    */

    /*

    function add(){

        //

        var inputNode = document.createElement("input"); // 创建一个节点的对象

        inputNode.setAttribute("type","file"); //给新节点设置type的属性值。

        var body = document.getElementsByTagName("body")[0];

        body.appendChild(inputNode);    //把新节点添加到body体中。

    }

    */

    var count = 1;

    function add(){

        var trNode  = document.createElement("tr");

        var tdNode  = document.createElement("td");

        var inputNode  = document.createElement("input");

        inputNode.setAttribute("type","button");

        inputNode.setAttribute("value",count+"");

        count++;

        tdNode.appendChild(inputNode);

        trNode.appendChild(tdNode);

        //trNode添加 到指定 的位置上。

        var tbodyNode = document.getElementsByTagName("tbody")[0];

        //tableNode.appendChild(trNode);

        var button1 = document.getElementById("b1");

        tbodyNode.insertBefore(trNode,button1); // 注意: 使用obj.insertBefore(o1,o2)这个方法的时候

        //obj必须是o1,o2的直接父节点。

        //alert(button1.nodeName+"~~"+trNode.nodeName+"~~"+tableNode.nodeName);

    }

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>无标题文档</title>

    </head>

    <body>

        <table>

            <tr>

            <td>

                <input type="button" value="0">

                </td>

            </tr>

            <tr id="b1">

             <td>

                <input type="button" value="添加" onclick="add()">

                </td>

            </tr>

        </table>

      

       

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script>

        function addFile(){

           var trNode = document.createElement("tr");

           var td1  = document.createElement("td");

           var td2  = document.createElement("td");

           td1.innerHTML="<input type='file'/>";

           td2.innerHTML="<a href='#' onclick='deleteFile(this)'>删除附件</a>"

           trNode.appendChild(td1);

           trNode.appendChild(td2);

           //把trNode添加 到添加按钮上面

           var addButton = document.getElementById("addButton");

           var tbody = document.getElementsByTagName("tbody")[0];

           tbody.insertBefore(trNode,addButton);

        }

     

     

        function deleteFile(deleteNode){

           //找到要删除的tr  a---->td---->tr

           var trNode  = deleteNode.parentNode.parentNode;  //获取到了要删除的tr节点。

           // 找 到trNode的父节点

           var tbodyNode  =document.getElementsByTagName("tbody")[0];

           tbodyNode.removeChild(trNode);

           //trNode.removeNode(true); // removeNode() 在firefox上不 支持,在ie支持。

        }

     

     

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>无标题文档</title>

    </head>

    <body>

     <table>

            <tr>

            <td><input type="file"></td>

                <td><a  href="#" onclick="deleteFile(this)">删除附件</a></td>

            </tr>

           <tr id="addButton">

            <td>    

                <input type="button" value="添加附件"  onclick="addFile()"/>

                </td>

            </tr>

        </table>

     

    </body>

    </html>

    2.5.2. 案例

    1. 生成二级城市联动菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>无标题文档</title>

    <style type="text/css">

    select{

        100px;

        }

    </style>

    <script type="text/javascript">

        function selcity()

        {

           //定义数据对应关系

           //城市有很多,所以通过数组存储。每一个省对应一个城市数组,怎么建立对应关系呢?

           //每一个省都有自己的角标。通过角标和数组建立对应关系,这就是二维数组。

          

           var arr = [['--选择城市--'],['海淀区','朝阳区','东城区','西城区']

                      ,['沈阳','大连','鞍山','抚顺']

                      ,['济南','青岛','烟台','威海']

                      ,['石家庄','廊坊','唐山','秦皇岛']];

                     

           //获取选择的省的角标。

           var selNode = document.getElementById("selid");

           var index = selNode.selectedIndex;

          

           var cities = arr[index];

          

           var subSelNode = document.getElementById("subselid");

          

           //有更简单清除方式,只要改变下拉菜单的长度即可。

           subSelNode.options.length = 0;

           /*

           //清除上一次选择的子菜单内容。

           for(var x=1; x<subSelNode.options.length;)

           {

          

               alert(subSelNode.options.length+"..."+subSelNode.options[x].innerHTML+"..."+x);

               subSelNode.removeChild(subSelNode.options[x]);

           }

           */

          

          

          

           for(var x=0; x<cities.length; x++)

           {

               var optNode = document.createElement("option");

              

               optNode.innerHTML = cities[x];

              

               subselid.appendChild(optNode);

           }

        }

    </script>

    </head>

    <body>

    <select id="selid" onchange="selcity()">

        <option>--选择省市--</option>

        <option>北京市</option>

        <option>辽宁省</option>

        <option>山东省</option>

        <option>河北省</option>

    </select>

    <select id="subselid">

        <option>--选择城市--</option>

    </select>

    </body>

    </html>

    2.动态生成年、月、日字段

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script type="text/javascript">

    /**

     * @author Administrator

     */

    //通过js创建年,月,日

    //获取Dom

    var dom = window.document;

    function myYear() {

        //获取年的select

        var year = dom.getElementById("year");

        //创建年

        var minYear = 1900;

        var maxYear = new Date().getFullYear();

        for (var i = minYear; i <= maxYear; i++) {

           //创建Option

           var opt = dom.createElement("option");

           //设置Option,标签体.

           opt.innerHTML = i;

           opt.value = i;

           //挂载节点

           year.appendChild(opt);

        }

    }

    function myMonth() {

        var month = dom.getElementById("month");

        //创建月

        for (var i = 1; i <= 12; i++) {

           //创建Option

           var opt = dom.createElement("option");

           //设置Option,标签体.

           if (i < 10) {

               opt.innerHTML = "0" + i;

               opt.value = i;

           } else {

               opt.innerHTML = i;

               opt.value = i;

           }

           month.appendChild(opt);

        }

        month.onchange = myDay;

    }

    function myDay() {

        clear();

        //创建天

        // 大月1 3 5 7 8 10 12 ,小月4 6 9 11    闰年2月 非闰年的2月

        //获取年

        var year = dom.getElementById("year").value;

        //获取月

        var month = dom.getElementById("month").value;

        if (year == "") {

           alert("请选择年");

           return;

        }

        if (month == "") {

           alert("请选择月");

           return;

        }

        //获取天select

        var day = dom.getElementById("day");

        //一个月至少有28天.

        for (var i = 1; i <= 28; i++) {

           var opt = dom.createElement("option");

           if (i < 10) {

               opt.innerHTML = "0" + i;

               opt.value = "0" + i;

           } else {

               opt.innerHTML = i;

               opt.value = i;

           }

           day.appendChild(opt);

        }

        //大月

        var isBigMonth = month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12;

        //小月

        var isSmallMonth = month == 4 || month == 6 || month == 9 || month == 11;

        //闰年    可以整除4但不能整除100 或者 年份可以整除400.

        var isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;

        //判断,如果是大月,添加3天

        if (isBigMonth) {

           //添加3天

           for (var i = 29; i <= 31; i++) {

               var opt = dom.createElement("option");

               opt.innerHTML = i;

               opt.value = i;

               day.appendChild(opt);

           }

        } else if (isSmallMonth) {

           //添加2天

           for (var i = 29; i <= 30; i++) {

               var opt = dom.createElement("option");

               opt.innerHTML = i;

               opt.value = i;

               day.appendChild(opt);

           }

        } else if (isLeapYear) {

           //如果是闰年,添加一天.专门处理闰年2月.

           var opt = dom.createElement("option");

           opt.innerHTML = 29;

           opt.value = 29;

           day.appendChild(opt);

        }

    }

    function clear() {

        var day = dom.getElementById("day");

        var optArr = day.childNodes;

        for (var i = optArr.length - 1; i >= 0; i--) {

           day.removeChild(optArr[i]);

        }

    }

    function getBirthday() {

        //获取Dom

        var dom = window.document;

        myYear();

        myMonth();

    }

    getBirthday();

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>javascript</title>

    </head>

    <body>

        生日:

           <select id="year">

               <option>年</option>

           </select>

           <select id="month">

               <option>月</option>

           </select>

           <select id="day">

               <option>日</option>

           </select>

       

    </body>

    </html>

    1. 生产一个验证码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script type="text/javascript">

    /**

     * @author Administrator

     */

    //验证码  ,4位的,由字符,数字组成.

    function createCode() {

        var datas = ["A", "B", "C", "D", "E", "F", "G", "H", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];

        //随机的从数组中取出4个元素.

        var mess = "";

        var index = 0;

        for (var i = 0; i < 4; i++) {

           //生成随机数.而且是在数组的长度范围内.

           //0-9之间的随机数. Math.floor(Math.random()*10)

           //0到数组长度(不包含)之间的浮点数.,向下取整,

           var index = Math.floor(Math.random() * datas.length);

           mess += datas[index];

        };

        //

        var codeSpan = window.document.getElementById("codeSpan");

        codeSpan.style.color = "red";

        codeSpan.style.fontSize = "20px";

        codeSpan.style.background = "gray";

        codeSpan.style.fontWeight = "900";

        codeSpan.style.fontStyle = "italic";

        codeSpan.style.textDecoration = "line-through";

        codeSpan.innerHTML = mess;

        codeSpan.value = mess;

    }

    createCode();

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>javascript</title>

    </head>

    <body>

        <span id="codeSpan"></span><a href="#" onclick="createCode()">看不清楚</a>

       

    </body>

    </html>

    3.    正则表达式

    位置:

           ^      开头

           $      结尾

    次数:

           *      0或多个

           +      1或多个

           ?      0或1个

           {n}     就是n个

           {n,}   至少n个

           {n,m}  最少n个,最多m个

    通配符:

           d     任意数字

           D     任意非数字

           s     任意空白

           S     任意非空白

           .      任意字符(除' '外)

    组合:

           [a-z]

           [0-9]

           等

    组:

           (正则)     匹配括号中正则表达式对应的结果,并暂存这个结果。

           (?:正则)   匹配括号中正则表达式对应的结果,但不暂存这个结果。

           数字      使用第n个组匹配的结果

    使用正则的工具(RegExp类与相关方法)

    创建:

           // 方式一

           var regex = new RegExp("正则表达式", "标志");

           // 方式二

           var regex = /正则表达式/标志

    参数说明:

    正则表达式:

        参见上面的规则

    标志:

        g (全文查找出现的所有 pattern)

        i (忽略大小写)

        m (多行查找)

    方法:

           Regexp.test( str )

           String.replace( regex, str )

          

    练习:校验表单

     

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script>

       

        //用户名的规则: 第一位是字母,只有由数字与字母 组成,6位。

        function checkName(){

           //获取到了用户名的值

           var userName = document.getElementById("username").value;

           var userSpan = document.getElementById("userId");

           var reg = /^[a-z][a-z0-9]{5}$/i;

           if(reg.test(userName)){

               //符合规则 

               userSpan.innerHTML="正确".fontcolor("green");

               return true;

           }else{

               //不符合规则

               userSpan.innerHTML="错误".fontcolor("red");

               return false;

           }  

        }

       

       

        //校验密码  6位

        function checkPass(){

           var  password  = document.getElementById("pwd").value;

           if(password.length>0){

               var reg = /^w{6}$/;

               var passSPan = document.getElementById("passId");

               if(reg.test(password)){

                  //符合规则 

                  passSPan.innerHTML="正确".fontcolor("green");

                  return true;

               }else{

                  //不符合规则

                  passSPan.innerHTML="错误".fontcolor("red");

                  return false;

               }

           }

          

        }

       

       

        //检验密码是否正确

        function ensurepass(){

           var  password1 = document.getElementById("pwd").value; //第一次 输入的密码

           var password2 = document.getElementById("ensurepwd").value;

           if(password2.length>0){

               var enSpan  = document.getElementById("ensure");

               if(password1.valueOf()==password2.valueOf()){

                  enSpan.innerHTML="正确".fontcolor("green");

                  return true;

               }else{

                  enSpan.innerHTML="错误".fontcolor("red");

                  return false;

               }  

           }

        }

       

       

        //校验邮箱

        function checkEmail(){

           var  email  = document.getElementById("email").value;

           var reg = /^[a-z0-9]w+@[a-z0-9]{2,3}(.[a-z]{2,3}){1,2}$/i;  // .com .com.cn

           var emailspan = document.getElementById("emailspan");

           alert(reg.test(email));

           if(reg.test(email)){

               //符合规则 

               emailspan.innerHTML="正确".fontcolor("green");

              

               return true;

           }else{

               //不符合规则

               emailspan.innerHTML="错误".fontcolor("red");

               return false;

           }  

        }

       

       

        //校验兴趣爱好: 至少要算中其中 的 一个。

        function checkHoby(){

           var likes  = document.getElementsByName("like");

           var hobySpan =document.getElementById("hobbySpan")

           var flag  = false;

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

               if(likes[i].checked){

                  flag =true;

                  break;

               }  

           }

     

           if(flag){

               //符合规则 

               hobySpan.innerHTML="正确".fontcolor("green");

               return true;

           }else{

               //不符合规则

               hobySpan.innerHTML="错误".fontcolor("red");

               return false;

           }  

        }

       

       

       

        //总体校验表单是否可以提交了  如果返回的true表单才可以提交。 上面的表单项必须要每个都填写正确。

        function checkForm(){

           var userName = checkName();

           var pass  = checkPass();

           var ensure  = ensurepass();

           var email = checkEmail();

           var hoby = checkHoby();

           if(userName&&pass&&ensure&&email&&hoby){

               return true;

           }else{

               return false;

           }

          

        }

       

       

       

       

       

     

     

    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>正则表达式</title>

    </head>

    <body>                         

    <form action="success.html" method="get" onsubmit="return checkForm()"> <!--如果表单提交时候触发的方法返回是false,那么该表单不允许提交,如果返回的是true允许提交 -->

               <table border="1px" width="50%" align="center" cellspacing="0px" cellpadding="3px">

                  <tr>

                      <td width="25%">姓名:</td>

                      <td>

                         <input type="text" name="username" id="username" onblur="checkName()"/>

                            <span id="userId"></span>

                      </td>

                  </tr>

                  <tr>

                      <td >密码:</td><td>

                         <input type="password"  name="pwd" id="pwd" onblur="checkPass()"/>

                            <span id="passId"></span>

                      </td>

                  </tr>

                  <tr>

                      <td>确认密码:</td><td>

                  <input type="password" name="ensurepwd" id="ensurepwd" onblur="ensurepass()" />                    <span id="ensure"></span>

                      </td>

                  </tr>

                  <tr>

                      <td>邮箱</td><td>

                         <input type="text" name="email" id="email" onblur="checkEmail()"/>

                        <span id="emailspan"></span>

                         

                      </td>

                  </tr>

                  <tr>

                      <td>性别</td><td>

                         <input type="radio" checked="ture" name="gender" id="male" value="male"/>

                      男

                          <input type="radio" name="gender" value="female"/>

     

                      女</td>

                  </tr>

                   

                  <tr>

                      <td>爱好:</td><td>

                         <input type="checkbox" checked="checked"  name="like" />

                      eat

                         <input type="checkbox" name="like" />

                      sleep

                         <input type="checkbox" name="like"/>

                      play 

                        <span id="hobbySpan"></span>

                        </td>

                  </tr>

                  <tr>

                      <td>城市</td><td>

                      <select name="city" id="city">

                         <option value=""> 请选择</option>

                         <option value="bj"> 北京 </option>

                         <option value="gz"> 广州 </option>

                         <option value="sh"> 上海 </option>

                      </select>

                       

                        </td>

                  </tr>

                  <tr>

                      <td>自我介绍</td><td>               <textarea cols="15" rows="5"  name="myInfo" id="myInfo"></textarea></td>

                  </tr>

                  <tr align="center">

                      <td colspan="2"><!--提交按钮-->

                      <input type="submit"/>

                      </td>

                  </tr>

               </table>

           </form>

    </body>

    </html>

  • 相关阅读:
    mysql存储过程
    Mysql中的触发器
    快速开始、环境搭建、修改包名、新建模块、正式部署
    windows下redis下载安装
    Windows10下mysql 8.0.19 安装配置方法图文教程
    IDEA中安装SVN
    常见页面报错
    Python AttributeError: 'Module' object has no attribute 'STARTF_USESHOWINDOW'
    如何编写一篇高质量的技术博文?学习本文的排名靠前大法
    Linux use apktool problem包体变大GLIBC2.14等问题
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/6025159.html
Copyright © 2011-2022 走看看