• JavaScript 简介


    1.JavaScript概述

    1.1.什么是js

    html:定义网页的内容

    css:描述了网页的布局

    JavaScript:指定了网页的行为

    1.2.js的历史

    1995年5月,网景公司,叫Brendan Eich的哥们,10天,LiveScript

    1995年12月,改名为JavaScript

    1996年8月,微软,Jscript

    1997-1999年,ECMA国际组织,ECMAScript,基于已有的JavaScript和Jscript,提出了标准的Script语法规则,JavaScript和Jscript都遵循这套标准。

    1999-以后,ECMAScript不断的更新

    1.3.js的特点

    1)脚本语言,不需要编译,解释运行

    2)可以插入到html中的编程代码,所有浏览器都支持

    3)基于对象,弱类型的语言

    4)很容易学习

    1.4.js的优点

    交互性:可以与用户进行动态交互

    安全性:只能在浏览器内部运行,不能访问本地硬盘或者其他资源

    跨平台:无论任何平台,只要有浏览器,就能运行

    面试题:javascript是一种什么样的语言

    答:解释性脚本语言,代码不进行预编译

      主要用来向HTML页面添加交互行为

      可以直接嵌入HTML页面,也可单独写成js文件并引入

      跨平台性,在绝大多数浏览器支持下,可以在多种平台下运行,linux,windows

    2.引入js(案例1)

    2.1.通过script标签引入

    一般在head中添加此标签

    2.2.引入外部的js文件

    如果js代码特别多,可以通过script标签引入外部的js文件

    注意:

    1)引入js文件的script标签中,不要添加任何其他js代码

    2)这个script标签不要自闭

    <!DOCTYPE HTML>
    <html>
        <head>
            <title></title>
            <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
            <!-- 第一种方式 -->
            <script type="text/javascript">
                function fn1(){
                    alert("你还真敢点");
                }
            </script>
    
            <!-- 第二种方式 -->
            <script type="text/javascript" src="demo.js"></script>
            
        </head>
        <body>
            <input type="button" value="按钮" onclick="fn2()"/>
        </body>
    </html>

    demo.js 中:

    function fn2(){
        alert("你怎么又点了")
    }

    3.语法

    3.1.注释

    单行注释://注释内容

    多行注释:/* 注释内容 */

    3.2.数据类型

    3.2.1.基本数据类型(案例2

    >number数值类型

    >string字符串

    >boolean布尔值

    >undefined类型

    >null类型

     

    (1)数值类型

    在js中, 所有的数值底层都是浮点型¸ 在需要时, 整型和浮点型会自动的进行类型的转换.

    例如:2.4+3.6=6

    特殊值:

            Infinity     正无穷大

            -Infinity    负无穷大

    NaN (not a number) 非数字 :NaN和任何数值都不相等, 包括它本身. 如果要判断一个值是否是非数字, 不能用 NaN == xx 来判断, 而是应该使用 isNaN(xx) 进行判断。

    在js中, 为number类型提供了对应的包装对象 – Number。

    (2)字符串类型

    在js中, 字符串类型是基本数据类型的一种, 字符串常量, 可以用单引号或者双引号引起来!

    例如:var s1 = “aaa”;       var s2 = ‘bbb’;

    在js中, 为string类型提供了对应的包装对象 – String。

    (3)布尔类型

    boolean, 值为true或false

    在js中, 为boolean类型提供了对应的包装对象 – Boolean。

    (4)undefined

    undefined类型的值只有一个, 就是undefined. 表示变量未定义。如果声明了一个变量, 但是没有初始化值, 该变量的值就是undefined

    例如:var a; 则a的值即为undefined。

    (5)null

    null类型的值也只有一个, 就是null, 表示此处的值现在为空。常用来作为函数的返回值, 表示该返回值是一个没有任何内容的空对象

     

    3.2.2.复杂数据类型

    复杂数据类型:对象(普通对象,数组,函数..)后面讲

    3.2.3.数据类型的转换

    在js中,在需要的时候,数据类型会自动进行转换,转换规则为:

    数值类型:

            转字符串类型, 直接转成对应值的字符串, 3 --> "3"

            转布尔类型, 0和NaN转成false, 其他数值转成true

            在需要时, 会自动转成对应的包装对象 100 --> new Number(100)

    字符串:

            空字符串(""): 转数值为0, 转布尔值为false

            非空纯数值字符串("123"): 转数值为对应的数值, 转布尔值为true

            非空非数值字符串("abc"): 转数值为NaN, 转布尔值为true

            在需要时, 会自动转成对应的包装对象. "aaa" --> new String("aaa")

                    

    布尔类型:

            true: 转数值为 1, 转字符串为"true"

            false: 转数值为 0, 转字符串为"false"

            在需要时, 会自动转成对应的包装对象.

    undefined

            转数值为NaN, 转字符串为"undefined", 转布尔值为false, 转对象会抛出异常!

    null

            转数值为 0, 转字符串为"null", 转布尔值为false, 转对象会抛出异常!

    /**
     * 
     */
    ////引入js,在 Html 的头部中的 script标签中引入使用--------------------
    function fn2() {
        alert("你怎么又点了");
        document.write(Date());
    }
    
    
    ////对数组中的数据类型进行定义--------------------------------------
    /*var a = [3>2>1,1<2<3,7>8>9,9<8<7]
    alert(a[0]) //为false
    alert(a[1])   //为true
    alert(a[2])
    alert(a[3])
    */
    
    ////定义变量-----
    //直接赋值,类型自动定义,后面都没有加 ;
    var i = 3
    var j = "abc"
    var k ='3'
    //跟Java中输出类似,还有一个弹出式的对话框alert()也是这么使用:
    document.write(i+","+j+k)
    //alert(i + "," + j + k)
    
    ////运算符,跟Java类似,但有两个 == 和 === 需要进行区别一下-----
    /*alert(666 == "666") //返回 true,因为类型不一样,会先将666隐式转换,再与 "666" 判断,但是类型相同就直接比较
    alert(666 === "666") *///返回false,严格相同,类型不同就直接返回false,相同再比较,相同返回true,不同返回false
    
    //返回对应值的类型
    /*var x = true
    alert(typeof x) //返回 boolean
    alert(typeof 6 +"66") //进行了拼接,返回 number66
    */
    //删除数组,
    //会把这个地方给空出来,是一个 undefined 类型的
    /*var a = [1,2,3,true,"nihao"]
    delete a[1]
    alert(a[1])*/
    
    /////分支结构
    /*if(6){
        alert("我却如此暴躁")
    }else{
        alert("世界如此美好")
    }
    
    if("123"){
        alert("大师兄,师傅被妖怪抓走了")
    }else{
        alert("师傅,大师兄说得对")
    }
    */
    
    
    ///////函数-------------------------------------------------
    //定义方法不需要类型
    /*function fn1(name, age) {
        alert(name + ":" + age)
    }
    fn1("tangdiao",18)
    
    //或者,将方法名放到前面去
    fn2 = function(name, age){
        alert(name + "," + age)
    }
    fn2("tangdiao",2)*/
    
    
    //////数组--------------------------------------------------
    //创建数组
    //数组中可以定义任意类型的数据,
    //数组的长度是可变的
    /*var arr1 = new Array()//创建空数组
    var arr2 = new Array(10)
    var arr3 = new Array("123",3,true,'g')
    //arr3.length = 5
    alert(arr3)*/
    
    
    ////////内置对象----------------------------------------------
    ///字符串对象----------------------
    //创建字符串
    /*var str = new String("nihao")
    var str2 = "jiezheyangdingyi"
        
    alert(str + "," + str2)    
    alert(str.length + str.charAt(2))//返回字符串的长度5和任意一个数据的位置h
    //还有一些方法用的时候调用就是了
    */
    
    
    ///RegExp 对象(正则)--------------
    //标识符: g -> Global 全局查找    i -> IgnoreCase 忽略大小写
    //如果正则需要从头到尾都匹配,需要以"^"开头,以"$"结尾。
    var rg1 = new RegExp("","")
    var rg2 = /xxxx/;//这里需要加上 ;结束
    //检查字符串
    str = "123"
    rg2.test(str)
    
    
    ///Array 对象---------------------
    var arr1 = new Array()
    var arr2 = ["123",5,true,'y',9]
    //一些属性和方法
    //alert(arr2.length) //返回字符串的长度
    
    var arr3 = new Array(1,3,4)
    //alert(arr3.concat(arr1,arr2))  //返回 1,3,4,123,5,true,y,9 将几个数组合并,返回一个新的数组,长度增大了
    
    //alert(arr2.join("-"))//返回 123-5-true-y-9,返回一个 String 类型的,但是原先的数组不会改变
    
    //alert(arr2.reverse()) //返回 9,y,true,5,123,在 java中需要一个循环,前后颠倒
    
    //alert(arr2.slice(1,4)) //返回 5,true,y,含头不含尾
    
    //alert(arr2.splice(1,3,"zzz")) //返回 5,true,y 是删掉的元素,原先的位置就一个 zzz 了
    
    //alert(arr2.pop()) //返回 9,是被移除了
    
    //alert(arr2.push("l")) //返回6,是数组长度,最后一个元素为l
    
    //alert(arr2.shift()) //返回 123,是被移除了
    
    //alert(arr2.unshift("nihao1")) //返回 6,数组长度,第一个为 nihao1
    
    //alert(arr2.sort())  //返回排序后的数组
    
    
    ///Date对象--------------------
    var date1 = new Date()
    //alert(date1)  //返回 Wed Aug 15 2018 10:25:08 GMT+0800(中国标准时间)
    
    //alert(new Date(2018,8,15)) //指定日期,注意月是从 0 开始,这里就是 9 月
    
    //alert(date1.toLocaleString()) //返回 2018/8/15 10:30,转为本地时间的格式
    
    //还有几个是获取年月日,星期几,毫秒数的,用的时候查看一下就行了
    
    
    ///Math 对象------------------
    //可以直接拿来使用!!
    
    //alert(Math.PI) //返回圆周率的值:3.141592653
    
    //alert(Math.exp(1)) //自然对数e的几次幂,这里是1次,为:2.7182818
    
    //alert(Math.abs(-7)) //返回一个数的绝对值
    
    //alert(Math.ceil(3.1415)) //向上取整,为 4
    
    //alert(Math.floor(3.1415)) //向下取整,为3
    
    //alert(Math.round(3.1415)) //四舍五入为整数,这里是 3
    
    
    ///全局对象(gloabal)-------------
    
    //alert(typeof parseFloat("3.14")) //将这个字符串转化为 float,为数字 3.14
    
    //alert(typeof parseInt("9.99"))  //将这个字符串转化为整型,为 9
    
    //alert(isNaN("abcd"))  //返回 true
    //alert(isNaN("123"))   //返回 false,判断一个值是否为非数字,不是数字就返回true,是数字就返回 false
    
    //eval("alert(1 + 2)")  //加不加引号都差不多,将里面的按代码执行,为 3
    
    
    ///自定义对象--------------------
    /*function Person(){}
    var p3 = {
            "name":"tangdiao",
            "age":18,
            "run":function(){
                alert(this.name + this.age) 
            }
    }
    //取值
    alert(p3.name)
    alert(p3["name"])
    alert(p3.run()) //调用有方法的后面需要加上(),不然就是取那个字符串的值
    
    function Person2(name,age){
        this.name = name,
        this.age = age,
        this.run = function(){
            alert(name + ":" + age)
        }
    }
    
    var p1 = new Person2("唐雕",19)
    alert(p1.name)
    alert(p1.age)
    p1.run()*/
    
    //////DHTML-------------------------------------------
    
    /////BOM---------------
    ///Window对象
    function clickfn(obj){
    
        if(obj.value == "123"){
            obj.value = "456"
        }else{
            obj.value = "123"
        }
    
    }
    
    //获得焦点触发
    //需要在html的onfocus()事件关联这个方法
    function focusfn(obj){
        obj.value = "请输入密码"
    }
    
    //失去焦点触发,
    //需要在html的onblur()事件关联这个方法
    function blurfn(obj){
        obj.value = "你离开了"
    }
    
    //这个方法只需要在js文件下定义,不需要到html中再写
    //在页面加载完毕就触发这个事件
    /*onload = function(){
        
        var inp = document.getElementById("input3")
        alert(inp.value)
        
    }*/
    
    //confirm提示框的使用
    function confirmfn(){
        if(confirm("是否删除商品")){
            alert("商品已删除")
        }else{
            alert("商品还在")
        }
    }
    
    //location对象-----------
    //获取当前的url(该html本地路径)
    /*alert(location.href)
    alert("此页面将要跳转到tmooc")
    location.href = "http://www.tmooc.cn/"
    */    
    
    //Dom 对象---------------
    //对元素进行增删改
    
    //id
    function demo1(){
        var inp = document.getElementById("input2")
        alert(inp.value)
        inp.value = "兰姐"
    }
    
    //name
    //注意:这里是Elements,
    //还有匹配的后面要有一个[],定义查出来的第几个
    function demo2(){
        var inp = document.getElementsByName("name1")[0]
        alert(inp.value)                                
    }
    
    //tagname**
    function demo3(){
        var inp= document.getElementsByTagName("name")[0]
        alert(inp.value)
    }
    
    //font**
    function demo4(){
        var inp = document.getElementById("input1").getElemetsByTagName("font")
        alert(inp.innerHtml)
        inp.innerHtml = "<font color = 'green'>我要变身啦!!</font>"
    }

    3.3.如何定义变量

    在js中有数据类型,但是变量不区分数据类型,所以,js是弱类型语言

    在js中声明变量,可以通过var关键字声明

    例如:var i = 5;               var a = “abc”;

    3.4.运算符(案例3

    js中的运算符和java中的运算符基本一致

    不同点:

    ==:如果数据类型不同,会先转换数据类型,再比较,如果类型相同,直接比较

    ===:严格相等,如果数据类型不同,则直接返回false,如果类型相同,才会进行比较。

    typeof:可以返回变量、常量、表达式的数据类型

    格式:var x = 123                   typeof x

    delete:删除数组中的元素或者对象的属性

    格式:var arr = [123,”abc”,true]            delete arr[1]

    //1.分别用"=="和"==="判断数字666和字符串"666"是否相等

                             //alert(666 == "666")//true

                             //alert(666 === "666")//false

                            

                             //2.分别对x进行不同的赋值,利用typeof查看x的数据类型

                             var x = true;

                             //alert(typeof x)

                            

                             //3.问题:判断typeof 6+"66" 的值是什么?

                             //alert(typeof 6+"66")

                            

                             //4.删除下面数组中的第二个元素

                             var arr = [111,"abc",true];

                             alert(arr)

                             delete arr[1]

                             alert(arr)

                             alert(arr[1])//undefined

    3.5.语句

    js的语句和java的语句基本一致

    if语句:

    判断时,会先将数据类型转换为boolean值

    switch语句

    和java中一样,也支持字符串

    循环语句

    while、do...while、for,语法与java一致

    注意:js不支持增强for循环

    3.6.函数(案例4)

    定义方式一:通过function关键字定义

    格式: function 函数名(形参列表){

    函数体

    }

    调用:函数名(参数)

    定义方式二:通过函数表达式定义

    格式:var fn2 = function(形参列表){

    函数体

    }

    调用:函数名(参数)

    //方式一

                             function fn1(name,age){

                                      alert(name+":"+age)

                             }

                             //fn1("尼古拉斯赵四",18);

                            

                             //方式二

                             var fn2 = function(name,age){

                                      alert(name+":"+age)

                             }

                             fn2("小沈阳",17);

    3.7.数组

    创建一:通过构造函数创建数组

    var arr1 = new Array() //创建空数组

    var arr2 = new Array(10) //创建长度为10的空数组

    var arr3 = new Array(123,”abc”,true) //创建有初始值的数组

    创建二:通过数组直接量创建

    var arr4 = [] //创建空数组

    var arr5 = [“aaa”,111,false] //创建有初始值的数组

    注意:

    1)数组可以存放任意数据类型

    如:var arr5 = [“aaa”,111,false]

    2)数组的长度可以随便改变

    如:var arr5 = [“aaa”,111,false]    arr5.length = 1;

    3)如果数组中的某一位置没有元素,这个位置的值为undefined

    如:var arr5 = [“aaa”,111,false]    arr5[10]

    3.8.内置对象(案例5

    3.8.1.String对象

    创建:

    var str1 = new String(“xxx”);    //创建字符串对象

    var str2 =“xxx”;                            //创建字符串基本类型,但是也可以

    常用属性和方法:

    str.length           返回字符串长度。

    str.charAt(index)     返回指定索引位置处的字符。

    例如:var str = "abcdeabc";    str.charAt(3)  // d

    str.indexOf(subString, startIndex)   返回第一次出现子字符串的位置。

    例如:var str = "abcdeabc";    x.indexOf("bc",2)  // 6,从第3个开始数

    str.lastIndexOf(substring, startindex)  返回最后出现子字符串的位置。

    例如:var str = "abcdeabc";  x.lastIndexOf("bc",8);  // 6,从后往前数

    str.split(delimiter)  将字符串按照指定字符分割为字符串数组。

    例如:var str = "a:b:c:d";  str.split(":")  //返回为一个数组[a,b,c,d]

    str.slice(start, end)  提取字符串的某个部分,含头不含尾。

    例如:var str = "abcdeabc";  str.slice(2,4);  // cd

    str.substr(start, length)  返回从指定位置开始的指定长度的子字符串。

    例如:var str = "abcdeabc";   str.substr(2,4);  //cdea

    str.toLowerCase( )    字符串中的字母转换为小写。

    例如:var str = "ABCDE";    str.toLowerCase();  //abcde

    str.toUpperCase( )    字符串中的字母转化为大写。

    例如:var str = "abcde";   str.toUpperCase();  //ABCDE

    str.match(regexp)     在字符串中查找指定匹配正则表达式的值。

    str.replace(regexp, replaceText)  字符串中匹配正则的值替换为其他值。

    str.search(regexp)    查找与正则表达式匹配的第一个子字符串的位置。

    3.8.2.RegExp对象(正则)

    创建:

    var reg1 = new RegExp("", ""); 

    var reg2 = /xxx/;

    标识符: g à Global 全局查找      i à IgnoreCase 忽略大小写

    如果正则需要从头到尾都匹配,需要以”^”开头,以”$”结尾。

    reg.test(str); 检查字符串是否符合该正则, 如果符合返回true, 不符合返回false!!!

    3.8.3.Array对象

    创建:

    var arr1 = new Array();

    var arr2 = [];

    常用属性和方法:

    arr.length  返回数组中元素的个数

    例如:var arr = ["a","b","c"];   arr.length;  // 3

    arr.concat(arr1,arr2,arr3...) 将多个数组合并成一个

    例如:

    var arr1 = ["a","b","c"];   var arr2 = ["d","e","f"];   var arr3 = ["x","y","z"]; 

    arr1.concat(arr2,arr3);   // ["a","b","c","d","e","f","x","y","z"]

    arr.join(string)  将数组中所有元素按照指定字符串连接成一个字符串

    例如:var arr = ["aaa",123,true];   arr.join("-");   // aaa-123-true

    arr.reverse( )  返回一个元素顺序被反转的 Array 对象。

    例如:var arr = ["a","b","c"];   arr.reverse();  //["c","b","a"]

    arr.slice(start, end)    返回一个数组的一段,含头不含尾。

    例如:var arr = ["a","b","c",1,2,3];   arr.slice(2,4);  // ["c",1]

    arr.splice(start, deleteCount,value...)

        从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

    例如:var arr = ["a","b","c","d","e","f"];  arr.splice(2,2,"zzz");

            // 返回值为["c","d"],arr则变为["a","b","zzz","e","f"],中间被替换

    arr.pop( )  移除数组中的最后一个元素并返回该元素

    例如:var arr = ["aaa",123,"x",true,8];    arr.pop();

                             //返回值为 8,arr则变为["aaa",123,"x",true]

    arr.push(value) 在数组的末尾加上一个或多个元素,并返回新数组的长度值

    例如:var arr = ["aaa",123,"x",true,8];    arr.push("last")

    //返回值为6,arr则变为 ["aaa",123,"x",true,8,"last"]

    arr.shift( )  移除数组中的第一个元素并返回该元素

    例如:var arr = ["aaa",123,"x",true,8];    arr.shift()

    //返回值为 "aaa" ,arr则变为[123,"x",true,8]

    arr.unshift(value) 为数组的开始部分加上一个或多个元素,并且返回该数组的新长度

    例如:var arr = ["aaa",123,"x",true,8];    arr.unshift("first")

    //返回值为6,arr则变为["first","aaa",123,"x",true,8]

    arr.sort(sortfunction)  返回排序后的数组。

    3.8.4.Date对象

    创建:

    var date1 = new Date();    // 当前时间

    var date2 = new Date(年,月,日[,时,分,秒]);  //指定时间,可以只有年月日

    注意:当创建指定时间的时候,月是从0开始,例如:

    var date2 = new Date(2008,7,8,20,0,0); 

    这个时间是2008年8月8日晚上8点整

    常用方法:

    data.toLocaleString() 把日期(一个数值)转变成本地日期格式字符串

    例如:var date2 = new Date(2008,7,8);  date2.toLocaleString();

    // "2008/8/8 上午12:00:00" 

    data.getFullYear()   获取日期对象中所表示时间的年份

    例如: var date = new Date(2008,7,8);  date.getFullYear();   // 2008

    data.getMonth()   获取日期对象中所表示时间的月份,返回一个 0 到 11 之间的整数,0表示一月。

    例如:var date = new Date(2008,7,8);   date.getMonth();  // 7

    data.getDate()   获取日期对象中所表示一个月的日期值,返回值是一个处于 1 到 31 之间的整数,代表了相应的日期值。

    例如:var date = new Date(2008,7,8);  date.getDate();  // 8

    data.getDay()   获取日期对象中所表示一个周的日期值。 返回的值是一个处于 0 到 6 之间的整数,0表示周日,6表示周六。

    例如:var date = new Date(2008,7,8);   date.getDay();  // 5,表示周五

    data.getTime()   返回从 1970 年 1 月 1 日至指定时间的毫秒数。

    例如:var date = new Date(2008,7,8);  date.getTime();  //1218124800000

    3.8.5.Math对象

    Math可以直接拿来用!

    常用属性和方法:

    Math.PI  返回圆周率的值,约等于 3.141592653589793。

    例如:var num = Math.PI;    // num 的值为3.141592653589793。

    Math.exp(number)  返回 e(自然对数的底)的幂。

    例如:Math.exp(1)    // e1 约等于2.718281828459045

    Math.abs(number)  返回数字的绝对值。

    例如:Math.abs(-5)    // 5

    Math.ceil(number)   向上取整

    例如:Math.ceil(3.14)    // 4

    Math.floor(number)  向下取整

    例如:Math.floor(3.14)    // 3

    Math.round(number)  四舍五入到整数

    例如:Math.round(5.67)    // 6

    Math.random()  返回介于 0 和 1 之间的伪随机数。

    3.8.6.全局对象(global

    全局对象没有语法。直接调用其方法。

    parseFloat(numString)  将字符串转换成浮点数。

    例如:parseFloat("13.14")    // 返回number类型的13.14

    parseInt(numString)  将字符串转成整数,非四舍五入。

    例如:parseInt("9.99")    // 返回number类型的9

    isNaN(numValue)  判断一个值是否为非数字。

    例如: isNaN("abc")    // true

    isNaN("123")    // false

    eval(codeString)  判断一个字符串并将其以脚本代码的形式执行

    例如:eval("alert(1+2)");   //会直接将"alert(1+2)"当作代码执行,弹出3

    //一、字符串String

                             //1.将字符串中所有的"java"提取到一个数组中

                             var str = "zhang,java,wang,JAVA,li,java,zhao";

                             var reg1 = /java/g

                             //alert(str.match(reg1));

                            

                             //2.将字符串中所有的"java"不分大小写提取到一个数组中

                             var reg2 = /java/gi

                             //alert(str.match(reg2))

                            

                             //3.将所有的"java"不分大小写,全部换成"C++"

                             //alert(str.replace(reg2,"C++"))

                            

                             //4.查找第一个"java"出现的位置(不分大小写)

                             //alert(str.search(reg2))

                             //二、正则

                             //检查str字符串是否符合如下正则

                             var reg3 = /wang/;

                             var reg4 = /^wang$/;

                            

                             //alert(reg3.test(str))

                             //alert(reg4.test(str))

                            

                             //三、数组

                             //对arr进行排序,思考排序后的顺序

                             var arr = ["aaa",123,"x",true,8];

                             //var str = arr.pop();

                             //alert(str)

                             //alert(arr)

                             //var i = arr.push("last")

                             //alert(i)

                             //alert(arr)

                             var arr1 = arr.sort()

                             //alert(arr1)

                             var date = new Date(2008,7,8)

                             //alert(date)

                             var date1 = date.toLocaleString();

                             //alert(date1)

                            

                             //四、Math对象

                             //1.返回一个1-100之间的随机整数

                             //alert(Math.PI)

                             //alert(Math.ceil(Math.random()*100))

                             //2.返回一个30-50直接的随机整数

                             //alert(Math.round(Math.random()*20+30))

                             eval("alert(1)")

    3.9.自定义对象(案例6

    方式一:通过构造函数定义

    格式:function Person(){}  //创建一个空对象

      function Person2(参数1,参数2..){

    对象内容....

    }

    方式二:通过对象直接量定义

    格式:var p3 = {

    “name”:”张三”,

    “age” : 18,

    “run” : function(){}

    }

     

    对象中取值:

    p1.key     或            p1[“key”]

    //1.分别用两种方式定义一个对象,包含姓名和年龄,以及弹出姓名年龄的方法

                             //方式一

                                      function Person(){}

                                      var p1 = new Person();

                                      p1.name="刘能";

                                      p1.age = 19;

                                      p1.run = function(){

                                              alert(this.name+":"+this.age)

                                      }

                                      //alert(p1.name)

                                      //p1.run();

                                      function Person2(name,age){

                                              this.name = name;

                                              this.age = age;

                                              this.run = function(){

                                                      alert(this.name+"--"+age)

                                              }

                                      }

                                      var p2 = new Person2("宋小宝",20);

                                      //p2.run()

                                      var a = "name"

                                      //alert(p2[a])

                             //方式二

                                      var p3 = {

                                              "name" : "小沈龙",

                                              "age" : 16,

                                              "run" : function(){

                                                      alert(this.name+"#"+this.age)

                                              }

                                      }

                                      p3.run();

    <!DOCTYPE HTML>
    <html>
        <head>
            <title></title>
            <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
            <!-- js内置对象 -->
            <script type="text/javascript">
                //一、字符串String
                //1.将字符串中所有的"java"提取到一个数组中
                var str = "zhang,java,wang,JAVA,li,java,zhao";
                var reg1 = /java/g
                //alert(str.match(reg1));
                
                //2.将字符串中所有的"java"不分大小写提取到一个数组中
                var reg2 = /java/gi
                //alert(str.match(reg2))
                
                //3.将所有的"java"不分大小写,全部换成"C++"
                //alert(str.replace(reg2,"C++"))
                
                //4.查找第一个"java"出现的位置(不分大小写)
                //alert(str.search(reg2))
    
                //二、正则
                //检查str字符串是否符合如下正则
                var reg3 = /wang/;
                var reg4 = /^wang$/;
                
                //alert(reg3.test(str))
                //alert(reg4.test(str))
                
                //三、数组
                //对arr进行排序,思考排序后的顺序
                var arr = ["aaa",123,"x",true,8];
                //var str = arr.pop();
                //alert(str)
                //alert(arr)
                //var i = arr.push("last")
                //alert(i)
                //alert(arr)
    
                var arr1 = arr.sort()
                //alert(arr1)
    
                var date = new Date(2008,7,8)
                //alert(date)
                var date1 = date.toLocaleString();
                //alert(date1)
                
                //四、Math对象
                //1.返回一个1-100之间的随机整数
                //alert(Math.PI)
                //alert(Math.ceil(Math.random()*100))
                //2.返回一个30-50直接的随机整数
                //alert(Math.round(Math.random()*20+30))
    
    
                eval("alert(1)")
                
            </script>
    
            
            
        </head>
        <body>
            js内置对象演示
        </body>
    </html>

    4.DHTML

    4.1.DHTML概述

    DHTML: Dynamic HTML 动态的 html

    DHTML并不是一门新的技术, 而是将现有的HTML, CSS, JavaScript整合在一起, 形成了DHTML技术.

    DHTML分为BOM和DOM。

    BOM:Browse Object Modle 即浏览器对象模型,其中封装了浏览器操作相关对象。

    DOM:Document Object Modle 即文档对象模型,将整个HTML文档按照文档结构组织成了树形结构。

    4.2.BOM

    4.2.1.window对象

    此对象是全局对象,可以直接调用方法或者属性

    常用事件:

    onclick事件 - 当窗口被电击时触发

    onfocus事件 - 当窗口获取焦点时触发

    onblur事件 - 当窗口失去焦点时触发

    onload事件 - 当整个html文档加载完之后触发

    常用方法:

    alert()       -       弹出提示框

    confirm() -       弹出确认框,电击确定,返回true,反之为false

    location对象

    属性

    href          -       可以获取或者设置浏览器的地址栏

    //window对象

                             //1.在按钮点击时弹出提示框

                             function clickfn(){

                                      alert("恭喜,您点中了")

                             }

                             //2.输入框1获得焦点时弹出提示框

                             function focusfn(){

                                      alert("获得焦点了")

                             }

                            

                             //3.输入框2失去焦点时弹出提示框

                             function blurfn(){

                                      alert("失去焦点了")

                             }

                            

                             //4.弹出输入框3中的value值

                             //获取输入框3的input按钮

                             onload = function(){

                                      var inp = document.getElementById("input3");

                                      //alert(inp.value)

                             }

                            

                                     

                             //5.点击删除商品按钮,弹出提示是否删除,如果确定,则弹出商品已删除,否则弹出商品还在

                             function delfn(){

                                      if(confirm("是否删除")){

                                              alert("商品已删除")

                                      }else{

                                              alert("商品还在")

                                      }

                                     

                             }

                            

                             //location对象

                             //1.弹出当前url

                             //alert(location.href)

                            

                             //2.将页面url设置为"http://www.baidu.com"

                             alert("此页面将要跳转到tmooc")

                             location.href = "http://www.tmooc.cn"

    4.3.DOM

    4.3.1.获取元素

    document.getElementById("id值");  通过id值获取指定id的元素

    document.getElementsByName("name属性值");  通过name属性获取指定name值的所有元素组成的集合数组

    document.getElementsByTagName("元素名");  通过元素的名称获取指定元素名的所有元素组成的集合数组

    value属性: 获取或设置输入框的value值

    innerText:  (部分浏览器不支持) 获取或设置元素内的文本内容

    innerHTML:  获取或设置元素的html内容

    4.3.2.对元素进行增删改

    dom案例一:

    /* --通过ID获取并弹出用户名输入框的值-- */

            function demo1(){

                     var inp1 = document.getElementById("username")

                     alert(inp1.value)

                     inp1.value = "兰姐"

            }

            /* --通过name属性获取并弹出密码输入框的值-- */

            function demo2(){

                     var inp2 = document.getElementsByName("password")[0]

                     alert(inp2.value)

            }

            /* --通过元素名称获取并弹出确认密码输入框的值-- */

            function demo3(){

                     var inp3 = document.getElementsByTagName("input")[2]

                     alert(inp3.value)

            }      

            /* --获取元素内容-- */

            function demo4(){

                     var p = document.getElementById("pid").getElementsByTagName("font")[0]

                     //alert(p.innerText)

                     alert(p.innerHTML)

                     p.innerHTML = "<font color='green'>我要变身了。。。</font>"

            }

     一个面试题:添加 删除 替换 插入到某个节点的方法

    答:添加:obj.appendChild(childNode)

      删除:obj.removeChild(childNode)

      替换:obj.replaceChild(newChild,oldChild)

      插入:obj.innersetBefore(newChild,oldChild)

  • 相关阅读:
    bzoj 2216 Lightning Conductor
    一些有趣的问题合集
    Codeforces 40E Number Table
    Codeforces 37D Lesson Timetable
    bzoj 4289 Tax
    bzoj 2844 albus就是要第一个出场
    bzoj 2115 Xor
    luogu 3790 文艺数学题
    bzoj 1420 Discrete Root
    Lucas定理学习笔记
  • 原文地址:https://www.cnblogs.com/tangdiao/p/9481318.html
Copyright © 2020-2023  润新知