3.JavaScript

0.1概述

        javascript:是运行在浏览器是上的脚本语言,简称js

        javascript的出现让浏览器更加的生动,不再是单纯的静态页面。页面更具有交互性。

        javascript程序不需要我们程序员手动编译,浏览器直接手动打开解释执行。

        javascript包括三块:ECMAScript、DOM、BOM

                ECMAScript是核心语法。

                DOM编程是通过js对HTML中的dom节点进行操作。

                BOM编程是对浏览器本身进行操作。

        DOM和BOM的区别和联系?

                BOM的顶级对象是:window

                DOM的顶级对象是:document

                实际上BOM是包括DOM的!

0.2HTML嵌套javascript代码的三种方式

        方式一:事件句柄

                js是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。

                在js中有很多事件,并且任何事件都会对应一个事件句柄,事件和事件句柄的区别:事件句柄是在事件单词前添加一个on。

                事件句柄是以HTML标签的属性存在的,在该属性中写js代码,一条语句结束之后可以使用分号,也可以不用。

        方式二:脚本块

<script type="text/javascript">
    js代码
    //遵守自上而下的顺序依次逐行执行,可以有多个脚本块,出现位置随意
    // js单行注释
    /**/js多行注释
</script>

        方式三:引入外部js文件

<script type="text/javascript" src="js文件路径">
    //js文件中的代码也会遵循自上而下的顺序依次逐行执行
    //引入的同时不能执行js代码,也就是不能写js代码
    //必须有结束标签
</script>

                同一文件可以引入多次

0.3js语法

        标识符:命名规则和规范按照java执行

        变量:

                js是一种弱类型语言,没有编译阶段,可以所以赋值。

                声明:var

                全局变量:在函数体之外声明的变量属于全局变量。

                        生命周期:浏览器打开时声明,浏览器关闭时销毁

                局部变量:在函数体当中声明的变量,包括形参,如果不加var就会成为全局变量。

                        生命周期:函数开始执行时局部变量的内存空间开辟,函数结束之后,局部变量的内存空间释放。

        函数:

                等同于java语言的方法,函数也是一段可以被重复利用的代码片段,函数一般都是可以完成某个特定功能的。

                js的函数不需要指定返回值类型,返回什么类型都行。

                js的函数在调用的时候,参数的类型和个数没有限制。

                方式一:

function 函数名(形参列表){
    函数体;
}

                方式二:

函数名 = function(形参列表){
    函数体;
}

        js数据类型:

                js的变量在声明的时候不需要指定数据类型,但是在赋值时,每一个数据还是有类型的。

                js中的数据类型有:原始类型、引用类型

                        原始类型:Undefined、Nnmber、String、Boolean、Null

                        引用类型:Object及其子类

                ES规范,在ES6及之后基于以上6种之外添加一种新的类型:Symbol。

                typeof运算符,可以在程序的运行阶段动态获取变量的数据类型。

                typeof的运算结果是这6个字符串之一:"undefined"、"number"、"string"、"boolean"、"object"、"function"。

                        变量为空,tyoeof运算结果为"object"。

                在js中比较字符串是否相等使用"==",没有equals。

                Undefined:Undefined类型只有一个值undefined,当一个变量没有赋值,系统默认赋值undefined。        

                Number:整数、小数、正数、负数、NaN、Infinity都属于Number类型。

                        NaN:运算结果本来应该是一个数字,但是最后不是数字,就是NaN,比如:100/"中国人"。

                        Infinity:当除数为0的时候,结果无穷大,比如:10/0。

                        isNaN函数:true表示不是一个数字,false表示是一个数字。

                Boolean:true和false

                        Boolean类型有个函数Boolean(),可以将非布尔类型转为布尔类型。

                        一般在if()里的Boolean()可以省略。

                String:可以使用单引号,也可以使用双引号

                        方式一:

  var s = "abc"; //s是"string",属于String类型

                        方式二:

var s2 = new String("abc"); //s2是"object",属于Object类型

                        String是一个内置类,父类是Object。

                Object:是所有类型的超类,自定义的任何类型都默认继承Object,会继承Object类中所有的属性以及函数。

                        prototype属性:给类动态的扩展属性和函数。

                        定义类:定义类就跟定义函数一样,得看你是如何来区别是函数还是方法。类的定义也是构造函数的定义。

方法名(); //普通函数调用
var obj = new 方法名(); //这时的方法就当做一个类创建对象

                        定义类的属性:this.属性名 = 形参名

                        定义类的函数:this.函数名 = function(){};

                        null NaN undefined的区别:

                                数据类型不一致:null是"object"为Null类型,NaN是"number"为Number类型,undefined是"undefined"为Undefined类型。

                                null和undefined可以等同,==为true,===为false。

                        js中有两个特殊的运算符:

                                ==(等同运算符,值判断值是否相等)。

                                ===(全等运算符,即判断值是否相等,又判断数据类型是否相等)。

0.4事件

        回调函数:自己把函数写出来了,但是这个函数不是自己负责调用,由其他程序负责调用该函数。

        注册事件方式一:使用事件句柄,将回调函数注册到按钮上。

        注册事件方式二:使用纯js代码

var aa = 获取按钮对象

aa.事件句柄 = 回调函数,函数不需要加小括号

0.5js代码的执行顺序

        1.onload事件句柄:页面加载完成执行

<body onload="回调函数">
    <script type="text/javascript">
        function 函数名(){};
    </script>
</body>

        2.window.onload

<script type="text/javascript">
    window.onload=function 函数名(){};
</script>

0.6捕捉回车键值

<script type="text/javascript">
    window.onload=function 函数名(){
        var usernameElt = document.getElementById("username");
            //回车键的键值是13
            //ESC的键值是27
            //onkeydown键盘按下事件,event是形参名,接收的是事件对象,不管是什么事件都会传事件对象
        usernameElt.onkeydown = function(event){
            //获取键值,对于键盘事件,都有keyCode属性用来获取键值
            if(event.keyCode==13){
            //js代码
            }
        }
    };
</script>

0.7void运算符

        void运算符:执行表达式,但不返回任何结果。

        javascript::告诉浏览器后面是一段js代码。

<a href="javascript:void(0)" onclick="window.alert("test code")">
    既保留住超链接的样式,同时用户点击该超链接的时候执行一段js代码,但页面不能跳转
</a>

0.8控制语句

        控制语句和java一样用。

        if、switch

        while、do..while..、for循环

        break、continue

        for..in(了解)

for(var i in arr){ //i是数组的下标,如果是对象,那么i就是对象的属性名,是字符串
    alert(arr[i]);
}

        with(了解)

with(u){
    alert(username); //会在username前加上u.,变成u.username
}

0.9DOM编程

        1.获取并修改文本框的value

var aa = document.getElementById("id");
var bb = aa.value; //获取
aa.value = "zhangsan"; //修改

        2.innerHTML和innerText属性设置元素内部的内容

                相同点:innerHTML和innerText都是设置元素内部的内容

                不同点:

                        innerHTML会把后面的"字符串"当做一段HTML代码解释并执行。

                        innerText即使后面是一段HTML代码,也只会将其当做普通的字符串来看待。

var aa = document.getElementById("id");
aa.innerHTML="<font color='red'>用户名</font>"; 
aa.innerText="<font color='red'>用户名</font>"; 

        3.正则表达式

                正则表达式主要用于字符串格式匹配方面

                常见的正则表达式符号:

.:匹配除换行符以外的任意字符
\w:匹配字母或数字或下划线或汉字
\s:匹配任意的空白符
\d:匹配数字
\b:匹配单词的开始或结束
^:匹配字符串的开始
$:匹配字符串的结束
*:重复零次或更多次
+:重复一次或更多次
?:重复零次或一次
{n}:重复n次
{n,}:重复n次或更多次
{n,m}:重复n到m次
\W:匹配任意不是字母、数字、下划线、汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配不是单词开头或结束的位置
[^x]:匹配除了x以外的任意字符
[^aeiou]:匹配除了aeiou这几个字母以外的任意字符

                创建方式一:

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

                创建方式二:使用内置类RegExp

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

                        关于flags:

                                g:全局匹配

                                i:忽略大小写

                                m:多行搜索(如果前面是正则表达式,不能使用m。只有前面是普通字符串才可以使用)

                        test()方法:

true|false = 正则表达式.test("用户填写的字符串");

                        true:字符串格式匹配成功

                        false:字符串匹配失败

        4.复选框的全选和取消全选

        5.获取下拉列表选中项的value

        6.输出

document.write(内容):将内容输出到页面中,可以是HTML代码

        7.周期函数

var aa = window.setInterval(code,millisec);  //执行
window.clearInterval(aa); //取消执行

                code:必需,要调用的函数或要执行的字符串。

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

1.0BOM编程

        1.开启窗口,可以添加具体的地址为参数

window.open("地址","窗口类型")

                第二个参数可取值:

                        _blank:新窗口(默认)

                        _parent:父窗口

                        _self:当前窗口

                        _top:顶级窗口

        2.关闭当前窗口

window.close()

         3.消息框

window.alert("消息")

        4.确认框

window.confrim("确认信息")

                返回值Boolean

        5.history的前进和后退

<input type="button" value="前进" onclick="window.history.go(-1)" />
<input type="button" value="后退" onclick="window.history.back()" />

        6.将当前窗口设置为顶级窗口

//如果当前窗口的顶级窗口不是自己,就把自己设置为顶级窗口
if(window.top!=window.self){
window.top.location = window.self.location;
}

         7.将字符串当做一段js代码解释并执行

window.eval("var i = 100");
alert("i = " + i); //i = 100

         8.location设置浏览器的请求地址

var aa = window.location;
aa.href="http://www.jd.com";

        总结有哪些方法可以通过浏览器往服务器发请求?

                1.表单form的提交

                2.超链接

                3.document.location.href

                4.window.location

                5.window.open("url")

                6.直接在浏览器地址栏输入url,任何回车

                以上所有的请求均可以携带数据给服务器,只有通过表单提交的数据才是动态的

1.1数组

        方式一:

var arr = []; //创建长度为0的数组
var arr2 = [1,2,3,false,"abc",3.14]; //数据类型随意
arr2[1000] = "test"; //数组会自动扩容,前面下标位置的值为"undefined"

        方式二:

var a = new Array();
var a2 = new Array(3); //3表示长度
var a3 = new Array(3,2); //3和2就是具体的元素

1.2JSON

        json是一种标准的轻量级的数据交换格式。

        特点:体积小,易解析

        在实际的开发中有两种数据交换格式,使用最多,其一是JSON,另一个是XML。

                XML体积较大,解析麻烦,优点是语法严谨。

        1.创建json对象

var studentObj = {
    "sno" : "110",
    "sname" : "张三",
    "sex" : "男"
}

        2.访问json对象的属性

alert(studentObj.sno)

        3.创建json数组

var students = [
    {"sno":"110","sname":"张三","sex":"男"},
    {"sno":"111","sname":"张四","sex":"女"},
    {"sno":"112","sname":"张五","sex":"男"}
];

        4.遍历json数组

for(var i = 0; i < students.length; i++){
    var stuObj = student[i];
    alert(stuObj.sno);
}

        在js当中:[]和{}有什么区别? []是数组,{}是json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值