javaScript

Javascript
1、什么是Javascript,有什么用?Javascript是运行在浏览器上的脚本语言。简称JS。

 JavaScript是网景公司 (NetScape) 的 布兰登艾奇 (Javascript之父) 开发的,最初叫做Livescript。LiveScript的出现让浏览器更加的生动了,不再是单纯的静态页面了。页面更具有交互性。在历史的某个          阶段,SUN公司和网景公司他们之间有合作关系,SUN公司把rivescript的名字修改为Javascript.Javascript这个名字中虽然带有"Java"但是和Java没有任何关系,只是语法上优点类似。他们运行的位置不               同Java运行在JVM当中,Javascript运行在浏览器的内存当中。
 JavaScript程序不需要我们程序员手动编译,编写完源代码之后,浏览器直接打开解释执行。
 Javascript的"目标程序”以普通文本形式保存,这种语言都叫做"脚本语言”。
 Java的目标程序已.class形式存在,不能使用文本编辑器打开,不是脚本语言
 网景公司1998年被美国在线收购。
 网景公司最著名的就是领航者浏览器: Navigator浏览器。
 Livescript的出现,最初的时候是为Navigator浏览器量身定制一门语言,不支持其他浏览器
 当Navigator浏览器使用非常广泛的时候,微软害怕了,于是微软在最短的时间内组建了一个团队,开始研发只支持IE浏览器的脚本语言,叫做JScript。

 livescript的出现,最初的时候是为Navigator浏览器量身定制不支持其他浏览器门语言,
 当Navigator浏览器使用非常广泛的时候,微软害怕了,于是微软在最短的时间内组建了一个团队开始研发只支持IE浏览器的脚本语言,叫做JScript。
 JavaScript和JScript并存的年代,程序员是很痛苦的,因为程序员要写两套程序在这种情况下,有一个非营利性组织站出来了,叫做ECMA组织(欧洲计算机协会)ECMA根据Javascript制定了ECMA-262号              标准,叫做ECMA-Script。
    现代的javascript和jscript都实现了ECMA-Script规范。 (javascript和jscript统一了。)
    以后大家会学习一个叫做JSP的技术,JSP和Js有啥区别?JSP : Javaserver Pages (隶属于Java语言的,运行在J当中): JS:Javascript (运行在刘览器上。)

2.HTML嵌入JS样式

  第一种,直接嵌入

<!--
        1.要实现的功能
            用户点击以下按钮,弹出消息框。
        2.JS是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。
            在JS中有很多事件,其中有一个事件叫做:鼠标单击,单词:click。并且任何时间都会对应一个事件句柄:onclick
            区别是:事件句柄是在其前面加一个on
            事件句柄是以HTML标签属性存在的
        3.onclick=”js代码”,执行原理是什么?
            页面打开的时候,js代码并不会执行,只是吧把这段js代码注册到按钮的click事件上了。
            等这个代码发生click事件后,注册在onclick后边的js代码会被浏览器自动调用
        4.怎么用js代码弹出消息框?
            在js中有一个内置对象叫做window,window代表浏览器对象
        5.js中可以用‘’,“”都行
        6.js语句结束后可以使用;。或不用
        -->
        <input type="button" value="OJ" onclick="alert('Hello,ACM!')"/>
        <input type="button" value="OJ" onclick="alert('Hello,LengBo!')"/>
    

  第二种:脚本块

/*
        代码块有阻塞作用,页面加载时执行代码块,自上而下的顺序执行
    */
   </style>
   <script type="text/javascript">
       alert("head..........");
       
       
   </script>
<link rel="stylesheet" type="text/css" href="css2.css"/>
</head>

<body>
    <!--
        
        -->
        
        <input type="button" value="OJ" onclick="alert('Hello,ACM!')"/>
        <input type="button" value="OJ" onclick="alert('Hello,LengBo!')"/>
    

    第三种:引入js脚本文件

<!--在需要的位置引入JS脚本文件
    引入外部独立JS文件的时候,js文件中的代码会遵循自上而下的顺序依次执行,
    同一个js文件可以被引入多次
    注:《Script标签》不能<script/>这样干
    如果引入外部js文件,该Script代码块里面的js代码不执行,新的脚本块可以执行
    -->
   <script type="text/javascript" src="D:\java\java_HTML_CSS_JS\JS/js1.js">   
   </script>

 3.命名规则和规范

  规范:变量名开头字母都大写,类名开头字母小写后边都大写,常量所有字母都大写,中间用_隔开

  规则:使用数字,字母,下划线和美元符号命名

     数字不能作为开头

     严格区分大小写

4.JavaScript的变量

4.1 变量的声明与赋值

<!--javascript当中的变量?
    怎么声明变量?
        var 变量名;
        赋值:
        变量名=值
        和java不同的是,javaScript是弱类型语言,由值决定数据类型,没有编译阶段,这个值想赋值成什么都可以
        var a;
        a="abc";
        a=10;
        a=1.00;
        
    -->

 4.2 函数的定义与调用

  

<!--JS中的变量是一种弱类型的,函数如何定义?\
        语法格式:
        第一种:
                function 函数名(形参){
                    方法体;
                }
        第二种:
                函数名=function(形参){
                    方法体;
                }
                JS中的函数不需要指定返回值类型
                
                function sayHello(a,b){
                          alert(a+b)
                       }
                    同样,需要执行
                    sayhello(?+?);
在JS当中,函数名不能重名,后一个会将前一个函数覆盖掉,并且JS中没有方法重载。
-->

4.3.局部变量和全局变量

这个就不多说了。局部变量在生命周期内存在,函数调用完直接释放,全局就是从一开始浏览器一直到浏览器关闭,占内存

另外,如果一个定义函数中的局部变量声明没有加var,那么这个变量自动成为全局变量

5.数据类型

<!--
    1.虽然JS中的变量在声明的时候不需要指定数据类型,但是在赋值,每一个数据还是有关联的,所以还是得学JS包括哪些数据类型?
        JS中的数据类型有:
                原始类型、引用类型。
            原始类型:Undefined、Number、String、Boolean、Null
            引用类型:Object及Object的子类
    2.ES规范(ECMScript规范),在ES6后,基于这六种数据类型添加了一种新数据类型:Symbol
    3.JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态获取变量的数据类型。
        typeof的语法格式:
                typeof 变量名
        typeof运算符结果有以下6种:
        “underfunded”
        “number”
        “string”
        “boolean”
        “object”
        “function”
    4.在js中比较字符串用“==”就可以
    如何判断数据类型?
    function sum(a,b){
        if(typeof a == "number"&& typeof b == "number")
        return a+b;
        alert(a+b+“不是number”)
    }
    
    有点像instanceof!
    -->

 

 下面分别介绍6种类型:

1.undefined

    Undefined类型只有一个值,这个值就是Undefined

    当一个变量没有手动赋值的时候,系统默认赋值Undefined,也可以自己赋值为Undefined

2.Number

<!--
    1.Number类型包括哪些值?
    整数,小数,负数,不是数字,无穷大
    1 1.1 -1 NaN(表示Not a Number) Infinity(除数为0) 都属于Number类型 
    2.Number函数
        2.1 isNaN():结果是true表示不是数字,false是数字
        2.2 parseInt()函数 将字符串转换为数字,取整数位
        2.3 parseFloat()函数 将字符串转换为数字
        2.4 Math.ceil()函数 :向上取整
    -->

3.Boolean

<!--
    1.js中的布尔类型永远都只有两个值:true和false(和java相同)
    2.Boolean函数
        2.1Boolean()。
        语法格式:
                Boolean(数据)
                Boolean()函数作用是将非布尔类型转换为布尔类型。
                规律:“有”就是true,“”就是false
    -->

4.Null

就一个null;

5.String

<!--
    String类型:
        1.在js当中字符串可以单引也可以双引
        2.js创建字符串对象
            第一种:var s = “abc”;小string
            第二种:var s=new(“abc”);大String
            String的父类是object
        无论是大String还是小String他们的属性和方法都是通用的
        4.常用属性和方法:
            属性lenth 获取字符串长度
            方法:
                indextof 获取指定字符串中当前字符串中第一次出现的索引
                lastIndexOf 获取指定字符串中当前字符串中最后一次出现的索引
                replace        替换,一次替换一个(全部替换需要使用正则表达式)
                substr        截取字符串,从下标~从下标开始+
                    alert(“abcdefxyz”.substr(2,4))//cdef==(2~(4+2))
                substring    截取字符串,起始下标~结束下标,不包含结束下标
                    alert(“abcdefxyz”.substring(2,4))//cd
                toLowerCase 转小写
                toUpperCase    转大写
                split        拆分字符串
        小String(属于原始类型String)
        大String属于OBject类型
    -->

6.Object

<!--
    1.Object类型是所有类型的超类,自定义的任何类型默认继承Object
    2.Object属性
        prototype属性:给动态的拓展属性和函数
        Constructor属性
        3.Object包含哪些函数?
        tostring()
        valueof()
        tolocaleString()
    4.在js中定义的类默认继承Object所有的属性和方法,都有prototype属性
    5.如何定义类new对象?
        第一种方式:
            function 类名(形参){
                
            }
        第二种方式:
        类名=function(形参){
            
        }
        创建对象:
            new 构造方法名(实参);构造方法名与类名一致
        由于JS的特性,类和构造方法定义可以写在一起,因为没有方法重载,形参可以写任意个,不需要写相应的构造方法,
        引用.可以替换成【“”】
        
        6.prototype属性:
            可以通过这个属性来给类动态扩展属性及函数
            需要创建的类.prototype.创建属性/方法=function(){
                ...
            }
        
    
    -->

 6.null、NaN、Undefined的区别,等同运算符==/全等运算符===

<!--
    //==等同运算符,只判断值是否相等
    //===全等运算符,不光判断值相同,还判断数据类型是否相等
    //null和Undefined可以等同
    
    
-->

 7.JS中的事件

7.1常用事件

     blur 失去焦点

     focus获得焦点

     

     click鼠标单击

     dblclick鼠标双击

 

     keydown键盘按下

     keyup键盘弹起

 

     mousedown鼠标按下

     mouseover鼠标经过

     mouseout鼠标离开

     mouseup鼠标弹起

 

     reset表单重置

     submit表单提交

 

     change下拉列表选中项改变,或文本框内容改变

     select文本被选定

     load页面加载完毕(整个html页面所有元素全部加载完毕之后发生)

      7.2注册事件

第一种:

 第二种:

 

//获取元素id
   document.getElementById("b1")=function(){    //匿名函数
       ....                                        //这个是函数只是注册,不会被调用,click发生后才会调用
   }

 也就是说,事件都有on+,挺有意思,直接连接匿名函数执行

小练习,将密码框替换成文本框

<body>
    <input type="password" id="p1">
        <input type="button" value="换" id="b1"/>
    <script type="text/javascript" >   
    
        window.onload=function(){//加载完毕执行
            document.getElementById("b1").onclick=function(){//获取元素id
                var p1=document.getElementById("p1");//获取id
                //一个节点对象只要存在的属性都能.
                p1.type="text";//更改类型
                //居然不提示.....
            }
            alert("页面加载完成")
        }
        
      
    </script>
    
</body>

7.3.jS中的键值获取

keycode获取键值

<body>
    <input type="text" id="userName"/>
    <br>
    <input type="password" id="userPwd"/>
    <script type="text/javascript">
    window.onload=function(){
        var uesrName=document.getElementById("userName");
        
        var userPwd=document.getElementById("userPwd");
        //回车13
     //ESc是27 uesrName.onkeydown
=function(event){ if(event.keyCode==13) { alert("正在登录") } } alert("页面加载完成") } </script> </body>

8.void运算符

javascript:void(0)表示不跳转

<a href="javaScript:void(0)" onclick="alert('WoW~')">保留a样式,不能跳转</a>

<br><br><br><br>

还有一种方式:onclick=return false

 9.JS的·控制语句:

  和java的都大体一致,有两个不同的

  for..in 

 java中增强for遍历的数组元素,forin遍历元素下标

 

  with

 将()里的u+到属性名上访问的是u.username,u.pwd

  10.JS数组

    var arr=[啥都行,没有数据类型限制]

    JS数组自动扩容

  11.DOM编程

    11.1 

      DOM与Bom之间的区别与联系

  

 1.获取文本框的value

  

<input type="text" id="userName" />
    <input type="button" id="replace" value="replace"/>
    <input type="text" id="userName1" />
    <script type="text/javascript">
    window.onload=function(){
        document.getElementById("replace").onclick=function(){
        document.getElementById("userName1").value=document.getElementById("userName").value//替换value
        
        }

 2.innerHTML与innertext的区别:

Html会执行代码,text仅当成文字

 3.正则表达式

  正则表达式常用方法:

 

      .text()//检测value是否满足表达式 Boolean类型

         var ok=emailRegExp.test(email);
     .trim() //清除value前后空白符
       username = username.trim();
    如果不支持trim,可以手动拓展

     

 

<!--
    1.什么是正则表达式?有什么用?
        正则表达式:Regular Expression
        正则表达式主要用在字符串格式匹配方面。
    2.正则表达式实际上是一门独立的学科,在java、c、JavaScript中支持
      大部分编程语言都支持正则表达式。正则表达式最初用在医学方面,用来表示神经符号等。目前计算机领域用的多,用来搜索、匹配字符串格式
    3.正则表达式要求:
        第一:常见的正则表达式要认识
        第二:简单的正则表达式要会写
        第三:他人编写的正则表达式要能看懂
        第四:在JS中如何创建正则表达式对象
        第五:在JS中正则表达式对象有哪些方法
        第六:能够快速从网上找到自己需要的正则表达式,并测试有效
    4.常见的正则表达式符号?
        . 匹配除换行以外的任意字符
        \w 匹配字母或数字下划线或汉字
        \s 匹配任意空白符
        \d 匹配数字
        \b 匹配单词的开始或结束
        ^ 匹配字符串的开始
        $ 匹配字符串的结束
        
        * 重复零次或更多次
        + 重复一次或更多次
        ?重复零次或一次
        {n} 重复n次
        {n,} 重复n次或更多次
        {n,m} 重复n到m次
        
        \W 匹配任意不是字符数字下划线汉字的字符
        \S 匹配任意不是空白符的字符
        \D 匹配任意非数字的字符
        \B 匹配不是单词开头或结束的位置
        [^x] 匹配除了x以外的任意字符
        [^aeiou] 匹配除了aeiou的任意字符
    
        正则表达式当中小括号()优先级最高
        [1-9] 表示1-9任意一个数字
        [A-Za-z0-9] 表示A-Z、a-z、0-9的任意一个数字
        [A-Za-z0-9-] 表示A-Z、a-z、0-9、-的任意一个字符
        5.简单的正则要会写:
        QQ号:^[1-9][0-9]{4,}$
        邮箱:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        6.他人写的正则表达式要能看懂
        7.怎么创建正则表达式对象?怎么调用正则表达式的方法?
        第一种:
            var a=/正则或字符串/flags;
            
        第二种:
            var a=new regExp("正则表达式","flags")
        关于flags:
                g:全局匹配
                i:忽略大小写
                m:多行搜索(ES规范制定后才支持m),当前边是正则表达式时,m不可用,普通字符串时才行
-->
    
   
   
<link rel="stylesheet" type="text/css" href="css2.css"/>

</head>

<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 ok=emailRegExp.test(email);
                if(!ok){
                    document.getElementById("emailError").innerText="邮箱地址不合法"
                }else{
                    document.getElementById("emailError").innerText="邮箱地址合法"
                }
            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>

 

常用的正则表达式:

一、校验数字的表达式
1. 数字:^[0-9]*$

2. n位的数字:^\d{n}$

3. 至少n位的数字:^\d{n,}$

4. m-n位的数字:^\d{m,n}$

5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式
 
1. 汉字:^[\u4e00-\u9fa5]{0,}$

2. 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3. 长度为3-20的所有字符:^.{3,20}$

4. 由26个英文字母组成的字符串:^[A-Za-z]+$

5. 由26个大写英文字母组成的字符串:^[A-Z]+$

6. 由26个小写英文字母组成的字符串:^[a-z]+$

7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11. 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+ 12 禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式
 
1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

 
8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15. 钱的输入格式:

16. 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$

17. 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

18. 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

19. 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

20. 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$


21. 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

22. 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$


23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$


24. 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里


25. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26. 中文字符的正则表达式:[\u4e00-\u9fa5]

27. 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))


28. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)


29. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

30. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

31. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

32. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

33. IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)

34. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

 4.注册表单

最后注册提交时,判断所有span的innertext是否为空,为空就表示没有问题,就将提交按钮的type更改为submit提交走

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
    注册表单
</title>
<link rel="stylesheet" type="text/css" href="css2.css"/>

</head>

<body>
    
    <script type="text/javascript">
        window.onload=function(){
            var type=0;
            document.getElementById("username").onblur=function(){
                
                var usernameElt=document.getElementById("username").value;
                usernameElt=usernameElt.trim();
    
                if(usernameElt=="")
                {
                    document.getElementById("usernamespan").innerText="用户名不能为空"
                    
                }
                else
                document.getElementById("usernamespan").innerText=""
                var userreg=/^\S{6,14}$/
                if(userreg.test(usernameElt))
                {
                    
                }
                else
                document.getElementById("usernamespan").innerText="用户名只能在6-14位"
                var userreg1=/^\w{6,14}$/
                if(userreg1.test(usernameElt))
                {
                    document.getElementById("usernamespan").innerText=""
                    
                    
                }
                else
                document.getElementById("usernamespan").innerText="用户名只能存在数字或字母"
            }
            document.getElementById("pwd1").onblur=function(){
                var pwd1Elt=document.getElementById("pwd1").value;
                var pwdElt=document.getElementById("pwd").value;
                if(pwd1Elt==pwdElt)
                {
                    document.getElementById("pwd1span").innerText=""
                }
                else
                document.getElementById("pwd1span").innerText="与密码不一致"
            }
            document.getElementById("email").onblur=function(){
                var emailRegExp=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
                var emailElt=document.getElementById("email").value
                if(emailRegExp.test(emailElt))
                {
                document.getElementById("emailerror").innerText=""
                }
                else
                document.getElementById("emailerror").innerText="邮箱格式不符合"
            }
            document.getElementById("submit").onclick=function(){
                var usernamespan=document.getElementById("usernamespan").innerText
                var pwdspan=document.getElementById("pwd1span").innerText
                var emailspan=document.getElementById("emailerror").innerText
                if(usernamespan==""&pwdspan==""&emailspan=="")
                {
                    document.getElementById("submit").type="submit"
                    alert("注册成功")
                }
                else
                {
                    
                }
            }
            
        }
        
    </script>
    <form accept="http:localhost:8080" method="get">
        用户名<input type="text" name="username" id="username"/><span style="color: red; font-size: 12px;" id="usernamespan"></span><br>
        密码<input type="password" name="pwd" id="pwd"/><span style="color: red; font-size: 12px;" id="pwdspan"></span><br>
        确认密码<input type="password" id="pwd1"><span style="color: red; font-size: 12px;" id="pwd1span"></span><br>
        邮箱<input type="text" id="email"/><span style="color: red; font-size: 12px;" id="emailerror"></span><br>
        <input type="button" name="submit" id="submit" value="注册"/>
        <input type="reset" name="reset" id="reset" value="重置"/>
    </form>
        
    
    
    
</body>
</html>

 

5.复选单选框与全选

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
    复选单选框与全选
</title>
<link rel="stylesheet" type="text/css" href="css2.css"/>

</head>

<body>
    <script type="text/javascript">
    window.onload=function(){
        document.getElementById("all").checked=false;
        var insert=document.getElementsByName("insert")
        document.getElementById("all").onclick=function(){
            
            //全选
            for(var i=0;i<insert.length;i++)
            {
                insert[i].checked=all.checked
                
            }
            }
            
            //判断单选框是否全选,全选将全选框为一致
            //第一次for循环是循环每次insert,为了将insert数组中的onclick值更改
            
            //第二次fro循环也是循环insert,为了验证是否定点上全部单选框,若长度一致,则将全选框改为一致
            for(var i=0 ;i<insert.length;i++)
            {
                
                insert[i].onclick=function(){
                    var type=0;
                    for(var i=0;i<insert.length;i++)
                    {
                        if(insert[i].checked)
                            type++;
                    }
                    all.checked=(insert.length==type)
                   
                }
             
            }
        
    }
    </script>
    <input type="checkbox" value="全选" id="all"><br>
    <input type="checkbox" name="insert" value="鸡"><br>
    <input type="checkbox" name="insert" value="你"><br>
    <input type="checkbox" name="insert" value="太"><br>
    <input type="checkbox" name="insert" value="美">
</body>
</html>

6.下拉列表获取选中的value

使用onchange,当列表改变选则时获取当前value

 7.网页时钟

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
    网页时钟
</title>
<link rel="stylesheet" type="text/css" href="css2.css"/>

</head>


<body>
    <!--
        关于JS内置的支持类:Date,可以用来获取时间/日期
    -->
<script>
    //获取系统当前时间
        var nowTime=new Date();
    //输出,顶如java里的sout
    document.write(nowTime);
    //转换成当地语言环境的日期格式:
        nowTime=nowTime.toLocaleTimeString();
        document.write(nowTime+"<br>");
    
    document.write(nowTime)
    document.write("<br>")//这样也能换行,<br>在HTMl里可以执行
    document.write(nowTime)
    //如何获取自己心怡的格式?
    var t=new Date();
    var year=t.getFullYear();//返回年信息
    var month=t.getMonth();//获取月份,月是0-11
    //var dayofweak=t.getDay();这个是获取一周里的第几天(0-6,0表示周日)
    var day=t.getDate();//获取日信息
    document.write(year+""+(month+1)+""+day+""+"<br>")
    //重点,获取毫秒数
    var times=t.getTime();
    document.write(times)//一般会使用毫秒数当作时间戳(timestamp)


function displayTime(){ //从这行代码开始,每个1000毫秒就调用一次dispaly函数,因为不加var是全局变量 var v=new Date(); var strtime=v.toLocaleString(); document.getElementById("timediv").innerHTML=strtime } function star(){ Time=window.setInterval("displayTime()",1000) } function timeStop(){ window.clearInterval(Time) } </script> <br/> <input type="button" value="显示系统时间" onclick="star()"/> <input type="button" value="停止显示" id="stop" onclick="timeStop()"/> <div id="timediv"></div> </body> </html>

关于时间戳

 8.内部类Array数组类

 

 

 join()方法用于将数组中的所有元素连接成一个字符串。它将数组的每个元素转换为字符串,在JavaScript 中,个新的字符串
并用指定的分隔符将这些字符串连接起来形成

join()方法通常用于将数组的元素以特定的格式输出为字符串,例如生成逗号分隔的值列表、URL 参数字符串等。

 12.Bom编程:

window.open()与window.close()

close和×掉是一样的

 自己的页面也可以open,在打开页面还可以使用close,貌似只能关open打开的页面

2.Bom弹确认框

window.confirm()

comfirm是布尔类型,T就删,F就取消

 

 3.将当前窗口设置成顶级窗口

console.log是在控制台打印输出结果

iframe是一个独立的内嵌框架,并且受到主页面的限制和规则。

当嵌其他网页时,其内容将在 ifrae区域内显示,用户可以在该区域滚动、交与和浏览的内容。但是,这个区域在视觉上仍然被认为是当前页面的部分,没有自己独立的浏览器窗口。
请主意,<iframe的默认行为是在同一个浏览器上下文中加载的内容。

 4.histroy对象和location对象

histroy:

history 对象提供了一组方法,允许你在浏览器的历史记录中进行前进、后退和跳转操作

history.back() 方法可以模拟用户点击浏览器的后退按钮,返回到上一个页面

history.forward() 方法可以模拟用户点击浏览器的前进按钮,前往下一个页面

history.go()方法可以在浏览器历史记录中向前或向后移动指定数量的步骤.

 history.ength 属性可以获取历史记录中的页面数量

后退的两种表示方法:

 location:

2.location 对象:
location 对象提供了访问和操作当前页面 URL 的方法和属性
location.href 属性用于获取或设置完整的 URL,可以用于导航到其他页面

location.protocol 属性返回页面的协议部分 (例如“http:”或“https:")
location.host属性返回主机名和端口号。
location.pathname属性返回路径部分
location.search属性返回查询字符串部分
location.hash属性返回 URL 中的哈希值部分

href获取URL地址

 

 

 13.json

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
    网页时钟
</title>
<link rel="stylesheet" type="text/css" href="css2.css"/>

</head>


<body>
    <!--
        关于JS内置的支持类:Date,可以用来获取时间/日期
    -->
<script type="text/javascript">
    /*
        1.什么是json?
            javaScript Object Notation (javaScript对象标记),简称json(数据交换格式)
            JSON主要作用是,,一种标准的轻量级的数据交换格式,特点是:
                体积小,易解析
        2.json是一种标准的轻量级的数据交换格式,使用最多,其一是json,另一个是xml
            xml体积较大,解析麻烦,但是有其优点是,语法严谨(通常银行相关的系统之间进行数据交换的话会使用xml)
        3.在实际的开发中有两种数据交换格式,使用最多的,一是json,二是xml
            xml体积大,语法严谨。解析麻烦,但是有其优点,语法严谨。(通常银行相关的等等)
        4.json的语法格式,
            var jsonObj={
                "属性名":属性值,
                "属性名":属性值,
                "属性名":属性值,
                "属性名":属性值,
            }
        
    */
    //创建json对象(json也可以称无类型对象,轻量级,轻巧,体积小,易解析)
var stuentObj={
    "sno":"110",
    "sname":"张三",
    "sex":"",
}
//访问json对象的属性
    alert(stuentObj.sno+","+stuentObj.sname+","+stuentObj.sex)
//之前没有使用json对象,定义类,创建对象,访问对象属性
Student=function(sno,sname,sex){
    this.sno=sno;
    this.sname=sname;
    this.sex=sex;
}
var stu=new Student("111","李四","")
    alert(stu.sno+","+stu.sname+","+stu.sex)
    //json数组
    var students=[
        {"sno":"111",
    "sname":"张三",
    "sex":"",},
        {"sno":"112",
    "sname":"张三",
    "sex":"",},
    {"sno":"113",
    "sname":"张三",
    "sex":"",}
    ]
    //遍历
    for(var i = 0;i<students.length;i++)
    {
        var stuObj=students[i];
        alert(stuObj.sno+","+stuObj.sname+","+stuObj.sex)
    }
</script>

</body>
</html>
/*
        eval函数的作用是:
            将字符串当做一段js代码解释并执行
        
        
    */
   /*
        window.eval("var i=100;")
        alert("i="+i)//i=100
   */
  //java连接数据库。查询数据之后,将数据在java程序中拼成json格式的字符串,将json格式的字符串响应到浏览器
  //也就是说java响应到浏览器只是一个json格式的字符串,
  //可以用eval函数,将json格式的字符串转换成json对象
  var fromJava="{\"name\":\"zhangsan\",\"id\":\"110\"}"
  //将以上json格式的字符串转换成json对象
  window.eval("var jsonObj="+fromJava)
  alert(jsonObj.name+","+jsonObj.id)
  /*
    面试题:
        在js中:[]和{}有什么区别?
        []是数组
        {}是json
        
    java中的数组:int[] arr ={1,2,3,4,5};
    js中的数组:var arr=[1,2,3,4,5];
    json:var jsonObj={"email":"zhangsan@163.com"}
  */

 

 

<body>
    <!--
        关于tbody的使用
    -->
<script type="text/javascript">
    var data={
        "total":4,
//需要下面的内容
"emps":[ {"ename":7000,"username":"lengbo","passward":"wjn12345"}, {"ename":7000,"username":"lengbo","passward":"wjn12345"}, {"ename":7000,"username":"lengbo","passward":"wjn12345"}, {"ename":7000,"username":"lengbo","passward":"wjn12345"} ] }
//js代码目的是将内容呈现出来 window.onload
=function(){ var dispalyBtnelt=document.getElementById("dispalyBtnelt") dispalyBtnelt.onclick=function(){ var emps =data.emps; var html=""; for(var i=0;i<emps.length;i++) { var emp=emps[i]; html+="<tr>"; html+="<td>"+emp.ename+"</td>" html+="<td>"+emp.username+"</td>"; html+="<td>"+emp.passward+"</td>"; html+="</tr>"; } document.getElementById("emptbody").innerHTML=html; document.getElementById("cout").innerHTML=data.total; } } </script>
//按钮 <input type="button" value="显示密码" id="dispalyBtnelt"/> <h2>用户密码</h2> <table border="1px"> <tr> <th>id</th> <th>用户名</th> <th>密码</th> </tr> <tbody id="emptbody"> </tbody> </table> 总共<span id="cout">0</span> </body>

 

posted @ 2023-08-28 15:02  22软工冷薄  阅读(16)  评论(0编辑  收藏  举报