zoukankan      html  css  js  c++  java
  • 【JavaWeb JavaScript 02】

    一、JavaScript介绍

    javascript主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行JavaScript代码

    js是弱类型,Java是强类型

    弱类型:就是类型可变

    强类型:就是定义变量的时候,类型已经确定,不可以改变

    二、JavaScript和html代码的结合方式

    第一种方式:只需要在head标签中,或者body标签中,使用script标签来书写JavaScript代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
        
            /*alert是js语言提供的一个警告框函数
            * 它可以接受任意类型的参数,这个参数就是警告框的提示信息
            * */
            alert("hello world!")
        </script>
    </head>
    <body>
    
    </body>
    </html>

     第二种方式:使用script标签引入 单独的JavaScript代码文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <!--
            src属性专门用来引入js文件路径(可以是相对路径,也可以是绝对路径)
    
            script标签可以用来定义js代码,也可以用来引入外部的js文件,但是两个功能二选一。不能同时使用
        -->
        <script type="text/javascript" src="1.js"></script>
    
        <script type="text/javascript">
            alert("老好了!")
        </script>
    </head>
    <body>
    
    </body>
    </html>

    执行的顺序是:从上到下。上面的代码是先执行1.js文件的代码,后执行“老好了” 的代码

    三、变量

    什么是变量?变量就是可以存放某些值的内存的命名

    JavaScript的变量类型:

    • 数值类型:number
    • 字符串类型:string
    • 对象类型:object
    • 布尔类型:boolean
    • 函数类型:function

    JavaScript里特殊的值:

    • undefined    未定义,所有js变量未赋予初始值的时候,默认值都是undefined
    • null  空值
    • NaN  全称是:Not a Number  非数字。非数值

    JavaScript中的定义变量格式:

    •   var 变量名;
    •       var 变量名 = 值;
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>变量</title>
        <script type="text/javascript">
            var i=12;
    //        i="abc"
    
            var b = "bbb"
    
    //        typeof()是JavaScript语言提供的一个函数,返回的是数据类型
    //        alert(typeof(i));
            alert(i*b); //NaN是非数字,非数值
        </script>
    </head>
    <body>
    
    </body>
    </html>

    ------> 关系运算符

    > <  >= <= ! 和Java的是一样的,下面两个是和Java不一样的

    等于:==  简单的做字面值的比较

    全等于:=== 除了做字面值的比较之外,还会比较两个变量的数据类型

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            var a = 12;
            var b = "12";
    
            alert(a==b); //判断数值
            alert(a===b); //除了判断数值,还判断类型
        </script>
    </head>
    <body>
    
    </body>
    </html>

    ------> 逻辑运算符

    且运算: &&

    或运算: ||

    取反运算:!

    在Java中&&两个为真才为真,||一个为真就为真

    在JavaScript语言中,所有的变量,都可以作为一个boolean类型的变量去使用

    0,null,undefined,“”(空串)都认为是false

    四、数组

    js中数组的定义:

    格式:

      var 数组名 = [];  //空数组

      var 数组名 = [1,‘abc’ , true] ;//可以放不同类型的数值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数组</title>
        <script type="text/javascript">
            <!--数组的定义,赋值以及遍历-->
    
            var aa =[];
            aa[0] =1;
            aa[1] ="abc";
    
            aa[3]=true;
    
    //        js中也可以和Java一样给数组赋值,不同的是js中可以直接给最大的下标赋值,js会自动补齐比最大的下标小的数组
    //        alert(aa.length); //长度为:4
    
    //        遍历数组
            for(var i=0;i<aa.length;i++){
                alert(aa[i]); //数组的值分别为:1,"abc",undefined,true
            }
            
    //        从上面遍历的值可以得出:js的数组是可以存放任意数据类型,并且没有赋初始值的数组js会给一个默认值:undefined
            
        </script> 
    </head>
    <body>
    
    </body>
    </html>

    五、函数

    1、第一种:可以使用function关键字来定义函数

    语法 :function 函数名 (形式参数){函数体}

    2、第二种:

    var 函数名 = function(形式参数){函数体}

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>函数</title>
        <script type="text/javascript">
            <!--第一种函数定义方式-->
    
            function fun_1() {
                alert("简单的一个无参函数")
            }
    
            fun_1(); //js和Java一样,函数都是需要被调用才能执行
    
            function fun_2(a,b) {
                alert("有参无返回   a--->"+a+",b--->"+b);
            }
    
            fun_2(1,"abc");
    
    //        又返回的函数,
            function fun_3(num1,num2) {
                var sulter= num1+num2;
                return sulter;
            }
    
            alert(fun_3(12,13));
            
            <!--第二种函数定义方式-->
            var fun_4 = function (num1, num2) {
                return num1+num2;
            }
    
            alert(fun_4(100,50));
        </script>
    </head>
    <body>
    
    </body>
    </html>

    注意:在Java中函数允许重载。但是在JS中函数的重载会直接覆盖掉上一次的定义

    3、函数的arguments隐形参数(只在function函数内)

    arguments参数相当于Java中的可变参数,其实就是一个数组,在js中不需要定义,可以直接哪来用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>隐形参数</title>
        <script type="text/javascript">
    
            <!--需求:编写一个函数,用于计算所有参数相加的值并返回-->
            /*
            * arguments其实就是一个数组,所以可以用length查看长度
            * 也可以用arguments[0],arguments[1]这样取查看数组的值
            * */
            function sum() {
    //            function sum(num1,num2) { // arguments和函数内的参数没有关系
                var result = 0;
                for(var i=0;i<arguments.length;i++){
                    if(typeof(arguments[i]) == "number" ){
                        result += arguments[i];
                    }
                }
                return result;
            }
    
            alert(sum(1,2,3,4,5,6,"bbb",7,8,9,10));
    
        </script>
    
    </head>
    <body>
    
    </body>
    </html>

    六、JS中的自定义对象

    1、Object形式的自定义对象
     var 变量名= new Object(); //对象实例(空对象)
     变量名.属性名 = 值;//定义一个属性
     变量名.函数名= function(); //定义一个函数

    对象的访问:
     变量名.属性 / 函数名();

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Object自定义对象</title>
        <script type="text/javascript">
    
            var obj = new Object();
            obj.name="张三";
            obj.age = 18;
    
            obj.fun = function () {
                alert("姓名:"+this.name+",年龄:"+this.age)
            }
    
            alert(obj.name);
            alert(obj.age);
            obj.fun();
    
        </script>
    </head>
    <body>
    
    </body>
    </html>

    2、{}形式的自定义对象

    对象的定义:

      var 变量名 = {

        属性名:值,//定义一个属性

        函数名:function(){}  //定义一个函数

    }

    对象的访问:变量名.属性 /函数名();

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{}自定义对象</title>
        <script type="text/javascript">
    
            var key = {
                name:"张三",
                age:18,
                fun:function () {
                    alert("姓名:"+this.name+", 年龄:"+this.age)
                }
            }
    
            key.name;
            key.age
            key.fun();
    
        </script>
    </head>
    <body>
    
    </body>
    </html>

    七、JS中的事件

    什么是事件?事件就是电脑输入设备与页面进行交互的响应。

    常用的事件:

    • onload 加载完成事件: 页面加载完成之后,常用于做页面js代码初始化操作(即:自动触发的一些操作)
    • onclick 单击事件:常用于按钮的点击响应操作
    • onblur失去焦点事件:常用于输入框失去焦点后验证其输入内容是否合法
    • onchange 内容发生改变事件:常用于下拉列表和输入框内容发生改变后操作
    • onsubmit 表单提交事件:常用于表单提交前,验证所有表单项是否合法

    事件的注册分为静态注册和动态注册两种

    什么是事件的注册(绑定)?其实就是告诉浏览器,当事件响应后要执行那些操作代码,叫事件注册或事件绑定

    静态注册事件:通过html标签的事件属性直接赋值于事件响应后的代码,这种方式交静态注册

    动态注册事件:指先通过js代码得到标签dom对象,然后再通过dom对象.事件名=function(){}这种形式赋予事件响应后的代码,叫动态注册。

    动态注册基本步骤:

    1. 获取标签对象
    2. 标签对象.事件名= function(){}

     1、onload加载完成事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <script type="text/javascript">
            // onload事件的方法
            function onloadFun() {
                alert("静态注册onload事件,所有代码");
            }
    
            //onload事件动态注册。是固定写法
            window.onload= function () {
                alert("动态注册onload事件");
            }
    
        </script>
    </head>
    <!--<body onload="onloadFun()"> 静态onload调用方式--> 
    <body>
    
    </body>
    </html>

    2、onclick单击事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            //静态注册onclick事件
            function  onclickFun() {
                alert("静态注册onclick事件!")
            }
    
            //动态注册onclick事件
            window.onload = function () {
    
    //            1、获取标签对象
                /*
                * document是js提供的一个对象(即:整个html页面)
                * get  获取
                * Element  元素(即:标签)
                * By  通过
                * Id  id属性
                * getElementById  通过id属性获取标签对象
                * */
                var btnObj=document.getElementById("btn01");
    
    //            2、通过标签对象.事件名 =function(){}
                btnObj.onclick=function () {
                    alert("这是一个动态注册onclick事件")
                }
            }
    
        </script>
    </head>
    <body >
        <button onclick="onclickFun()">按钮1</button>
        <button id="btn01">按钮2</button>
    </body>
    </html>

    3、onblur焦点事件 -->鼠标离开后验证页面输入是否合法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            //静态注册
            function  onblurFun() {
                console.log("静态注册失去焦点事件");
            }
    
            //动态注册
            window.onload = function () {
    
    //            1、获取标签对象
                var onblurObj = document.getElementById("password");
    
    //            2、通过标签对象.事件名 = function(){}
    
                onblurObj.onblur = function(){
                    console.log("动态注册失去焦点事件");
                }
            }
    
        </script>
    </head>
    <body>
        用户名:<input type="text" onblur="onblurFun()"/> <br />
        密码:<input id="password" type="text"/>
    </body>
    </html>

    4、onchange 内容发生改变事件

    5、onsubmit 表单提交事件   --->这两个和上面的写法一样

    八、DOM模型

    什么是DOM模型?文档对象模型,换言之:把页面中的标签,属性,文本,转换成对象来管理。即Documents对象

    1、Documents对象理解

    Document管理了所有的html文档内容;是一种树形结构,有层级关系;它让我们把所有的标签都对象化;可以通过Document访问所有的对象

    2、Document对象中的方法介绍

    注:document对象的三个查询方法,如果有id属性,优先使用getElementById方法来进行查询

    如果没有ID属性,则优先使用getElementByName方法来进行查询,如果id属性和name属性都没有最后在按标签名查getElementByTagName

    以上三个方法,一定要在页面加载完成以后执行,才能查询到标签对象

    --->getElementById方法示例代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            /*
            * 需求:当用户点击了校验按钮,要获取输入框中的内容,然后验证其是否合法
            * 验证的规则:必须由字母,数字。下划线组成。并且长度为5-12
            * */
            function onclickFun() {
                //1、当操作标签的时候,一定要先获取标签的对象(这个对象就是dom对象[object HTMLInputElement])
                var userObj=document.getElementById("username");
                //2、通过对象来获取文本的值
                var text =userObj.value;
                //3、如何验证字符串复合某个规则,需要用到正则表达式技术 -->/^w{5,12}$/ 表示:必须已数字,字母,下划线开头或结尾,长度为5~12的数字
                var patt = /^w{5,12}$/;
    
                //5、获取span的对象
                var userSpanObj =document.getElementById("userSpan");
    
                //4、验证文本的内容是否复合规则
                if(patt.test(text)){
    //                alert("用户名合法"); 一般网站不会直接弹出一个alert来提示,常规的是用span提示
                        /*
                        * innerHTML 表示起始标签和结束标签的内容
                        * innerHTML 这个属性可读可写
                        * */
    //                userSpanObj.innerHTML="用户合法";
                        userSpanObj.innerHTML="<img src="right.png" width="15" height="15">";
                }else {
    //                alert("用户名不合法");
    //                userSpanObj.innerHTML="用户不合法";
                    userSpanObj.innerHTML="<img src="wrong.png" width="15" height="15">";
                }
            }
    
        </script>
    </head>
    <body>
        <tr>
            <td>用户名:</td>
                <!--<td><input type="text" id="username" value="wsz"/></td>
                    文本里面的内容其实就是用value来控制的,如果在input标签里面写了此内容就是默认,不写的话,在页面的输入框内可以编写
                    但是实际会有
                -->
            <td><input type="text" id="username" /></td>
        </tr>
    
        <tr>
            <td>
                <!--span是文本提示-->
                <span id="userSpan" style="color: red">
    
                </span>
            </td>
        </tr>
    
        <tr>
            <td><button onclick="onclickFun()">校验</button> </td>
        </tr>
    
    </body>
    </html>

    补充:JS的正则表达式 ---> JavaScript RegExp对象

    RegExp对象的三个方法:test()、exec() 以及 compile()

    • test() 方法检索字符串中的指定值。返回值是 true 或 false。
    • exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
    • compile() 方法用于改变 RegExp。
    • compile() 既可以改变检索模式,也可以添加或删除第二个参数。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>RegExp:是正则表达式(regular expression)的简写</title>
        <script type="text/javascript">
    //        var patt = new RegExp("e");
    //        alert(patt) //空对象执行结果:/(?:)/;有e参数的对象执行结果:/e/ -->从结果基本可以得出结论:RegExp对象其实/pattern/
    
            var patt = /e/; //也是正则表达式对象
    
            //表示要求字符串中是否包含a或b或c
            var patt_1 = /[abd]/; //查找方括号之间的任意字符 -->详细可参考w3cschool菜鸟教程.chm
            //表示要求字符串中是否包含a-z的小写字母
            var patt_2 = /[a-z]/;
            //表示要求字符串中是否包含A-Z的大写字母
            var patt_3 = /[A-Z]/;
            //表示要求字符串中是否包含1-9的数字
            var patt_4 = /[1-9]/;
            //表示除abc外的所有字符
            var patt_5 = /[^abc]/;
    
    //        元字符
            // w表示十分包含字母,数字,下划线 W查找非字母,数字,下划线
            var patt_6 = /w/;
            // d查找数字字符 D查找非数字字符
            var patt_7 = /d/;
    
    //        量词
            //至少包含一个a
            var patt_8 = /a+/;
            //是否包含0个或多个a
            var patt_9 = /a*/;
            //是否包含1个或0个
            var patt_10 = /a/;
            //是否包含连续三个a
            var patt_11 = /a{3}/;
            //是否包含连续三个至少3个至多5个连续a
            var patt_12 = /a{3,5}/; //---> 这个取的是最小单位,即:只要有三个或者5个连续的都是true的
            //^表示开头符合,$表示结尾符合
            var patt_13 = /^a{3,5}$/; //---> 这个必须是已a开头,已a结尾,并且是至少三个至多5个
            //所以这个的含义是必须是已字母,数字下划线开头和结尾,范围在5~12
            var patt = /^w{5,12}$/;
    
            var msg = "cetaaaaaaaaayuai";
            alert(patt_13.test(msg))
    
        </script>
    </head>
    <body>
    
    </body>
    </html>

    --->getElementByName方法示例代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function ckeckAll() {
                /*
                * 此方法目的是让复选框都选中
                * document.getElementsByName();是根据指定的name属性查询返回多个标签对应的集合
                * 这个集合的操作和数组一样
                * 集合中的每个元素都是一个dom对象
                * 这个集合中元素顺序(数组的下标)是他们在html页面从上到下的顺序
                * */
                var hobbies =document.getElementsByName("hobby");
    //            alert(hobbies[0].value); //值:c++
    //            alert(hobbies[0].checked);//checked表示复选框的选中状态,如果选中是true,不选中则是false;并且checked是可读可写的
    
                for(var i=0;i<hobbies.length;i++){
                    hobbies[i].checked=true;
                }
    
            }
    
            function ckeckNo() {
                var hobbies =document.getElementsByName("hobby");
                for(var i=0;i<hobbies.length;i++){
                    hobbies[i].checked=false;
                }
            }
    
            /*
            * 反选的意思是:如果选中,点击反选按钮则取消选择,如果不选,点击反选按钮则全部选择
            * */
            function ckeckReverse() {
                var hobbies =document.getElementsByName("hobby");
                for(var i=0;i<hobbies.length;i++){
                    if(hobbies[i].checked){
                        hobbies[i].checked=false;
                    }else {
                        hobbies[i].checked=true;
                    }
                }
            }
    
        </script>
    </head>
    <body>
        <tr>
            <th >---兴趣爱好---</th> <br />
            <td><input type="checkbox" name="hobby" value="c++"/>C++</td><br />
            <td><input type="checkbox" name="hobby" value="java"/>Java</td><br />
            <td><input type="checkbox" name="hobby" value="python"/>Python</td><br />
            <td><input type="checkbox" name="hobby" value="php"/>php</td><br />
    
            <td><button onclick="ckeckAll()">全选</button></td>
            <td><button onclick="ckeckNo()">全不选</button></td>
            <td><button onclick="ckeckReverse()">反选</button></td>
    
        </tr>
    </body>
    </html>

    --->getElementByTagName方法示例代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function ckeckAll() {
                /*
                * 如果html页面中既没有ID属性,又没有name属性,但是标签名一致,可以用标签名来获取(TagName)
                * document.getElementsByTagName("input"); 是按照指定标签名来进行查询并返回集合
                * 这个集合和数组一样,集合中的元素都是dom对象,集合中的元素是他们在html页面中从上到下的顺序
                * */
                var inputs =document.getElementsByTagName("input");
    
                for(var i=0;i<inputs.length;i++){
                    inputs[i].checked=true;
                }
            }
    
        </script>
    </head>
    <body>
        <tr>
            <th >---兴趣爱好---</th> <br />
            <td><input type="checkbox" value="c++"/>C++</td><br />
            <td><input type="checkbox" value="java"/>Java</td><br />
            <td><input type="checkbox" value="python"/>Python</td><br />
            <td><input type="checkbox" value="php"/>php</td><br />
    
            <td><button onclick="ckeckAll()">全选</button></td>
    
        </tr>
    </body>
    </html>

    --->createElement方法示例代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            window.onload = function () {
                /*
                * 现在需要我们使用JS代码来创建html标签,并显示在页面上。标签的内容就是:<div>帅哥,你好!</div>
                *
                * createElement通过给定的标签名创建标签对象
                *
                * */
                var divObj = document.createElement("div"); //在内存中<div> </div>
    
                var textNodeObj =document.createTextNode("帅哥,你好!"); //创建一个文本对象
    
                divObj.appendChild(textNodeObj); //把文本对象添加给标签对象
    
                document.body.appendChild(divObj); //把标签对象添加给body添加子元素
            }
            /*
            * 一定要理解document对象:把页面中的标签,属性,文本转换成对象来管理,所以可以用document反向添加元素给html页面
            * */
    
        </script>
    </head>
    <body>
    
    </body>
    </html>

    3、节点的常用属性和方法

    节点就是标签对象

     

     

  • 相关阅读:
    关于DataGridView的数据源绑定字符串两个值得注意的问题
    .Net 第三方控件(转)
    sql语句linq语言lambda表达式对照
    InvokeRequired 属性 与Invoke方法
    .net垃圾回收机制
    const与readonly的区别
    Developer Express控件组合中的GridControl控件,如何自动显示每一行的序号
    XtraGrid控件6——2种GridColumn的属性
    如何让应用程序仅运行一个实例(c#)
    DevExpress控件之GridControl控件
  • 原文地址:https://www.cnblogs.com/frankruby/p/14859391.html
Copyright © 2011-2022 走看看