JS和jQuery学习笔记

1.JavaScript概述
    1.什么时JavaScript
        JavaScript 简称“JS”,是哟中运行于JS解释器或执行引擎中的解释性脚本语言
    2.JS发展史
        1.1992年Nonbas公司开发了一款脚本语言,能够运行在网页中,名称CMM(C--),更名为ScriptEase
        2.1995年Netscape(网景)为自己的浏览器Navigator2.0开发了另一款脚本语言 - LiveScript,后更名为JavaScript
        3.1996年Microsoft,为自己的浏览器IE3.0开发了一款JavaScript的克隆版本JScript
        4.1997年Netscript找到了ECM(欧洲计算机制造商联合会)。Netscape将JS的核心交给了ECMA,从此JS的核心被更名为
        ECMA Script,简称ES

    完整的JS组成:
        1.核心: - ECMAScript
            包含了JS中最基本的语法规范
        2.浏览器对象模型 - BOM模型
            Browser Object Model 浏览器  对象  模型
            提供了一系列的可操作方法和属性用于和浏览器进行交互
        3.文档对象模型 - DOM模型
            Document Object Model
            提供了一系列的可操作方法和属性用于和文档进行交互
2.JS的使用方式
    1.在元素事件中编写JS代码
        事件:用户在元素上所激发的行为操作
            onclick:当用户单击元素时激发的操作
        语法:
            <标记 οnclick="JS执行代码">
            JS可执行代码:
                console.log("向控制台中输出一句话");
    2.将代码嵌入在网页的<script></script>里
        语法:
            在网页的任意位置处,均可以嵌入<script></script>
            <script>
                可执行的JS代码
            </script>
        特点:
            网页加载时执行

            document.write("向网页中输出一句话!")
            注意:将document.write编写在按钮中的话,在执行时,会刷新网页中的内容
    3.将JS代码编写在外部的JS文件中
        1.创建一个JS文件(xxx.js),编写JS代码
        2.在使用的网页中对JS文件进行引入
            <script src="JS文件的路径"></script>
        注意:在引入的JS标记中时不能编写JS脚本的
3.JS的基础语法
    1.JS都是由语句来组成的
        1.由运算符,关键字和表达式构成的
        2.JS中严格区分大小写
            console.log("...");正确
            Console.log("...");错误
        3.每条语句必须以;表示结束
        4.所有的标识符,符号必须都是英文的
    2.JS中的注释
        单行:// 自动换行算一行
        多行:/**/
3.JS中的变量 和 常量
    1.变量
        1.声明变量
            声明:var 变量名;
            赋值:变量名 = 值;
            声明并赋值:var 变量名=值;
        2.注意
            1.在声明变量时,尽量使用 var 关键字,如过省略var的话,也可以,但容易出问题。
            2.声明变量如果未赋值的话,默认值为undefined
        3.变量名的命名规范
            1.不能是JS中的关键字和保留关键字
            2.有字母,数字,下划线(_)和$
            3.数字不能开头
            4.尽量不要重复,重复的话后面的会覆盖前面的
            5.尽量要见名知意
            6.入伍特殊要求,尽量使用小驼峰命名法
        4.变量的使用方式
            1.为变量赋值
                只要变量出现在赋值(=)符号的左边,一律都是赋值操作
            2.获取变量的值
                只要变量没出现在赋值符号的左边,一律都是取值操作
            赋值操作
                1.先运算赋值符号右面表达式或值,再赋值给左边的变量
                2.赋值符号的左边只能说变量
    2.常量
        1.什么是常量
            已经声明后就不允许被修改的数据就是常量
        2.语法
            const 常量名=值;
        注意:
            1.常量声明好之后是不允许被修改的,所以一定要赋值;
            2.常量名一般采用全大写形式
            l.toFixed(n)取几位小数
4.数据类型
    JS中的数据类型分为以下两大类:
    1.基本数据类型
        1.number类型
            数字类型,可以表示32为的整数以及64为的浮点数
            整数:
                表示十进制,八进制,十六进制
                十进制:var num = 10;
                八进制:var num = 010;  0开头的数字都是八进制
                十六进制:var num = 0x10; 0x开头的数字是
            小数:
                小数点计数法:var num = 123.456;
                指数计数法:var num = 1.8e2;
        2.string类型
            字符串类型
            有Unicode字符,数字,标点组成
            注意:字符串在使用时必须用""或''引起来
            1.查看字符的Unicode码
                var str = "张";
                str.charCodeAt().toString(16);
            2.如何将Unicode码转换成对应的字符?
                一直Unicode码:5f20
                var str = "\u5f20";
            3.中文范围
                "\u4e00"~"\u9fa5"
            4.转义字符
                \n:换行
                \t:一个制表符
                \":"
                \':'
                \\:\
        3.boolean类型
            布尔类型,只用于表示真(true)或假(false)
            通常会表示条件的结果
               注意:
                boolean类型可以参与数字运算的,true当成1去运算,false当成0去运算
        4.查看数据类型
            使用 typeof() 或 typeof 查看变量的数据类型
    2.引用数据类型
5.数据类型转换
    1.隐式转换
        大部分加法运算时,如果数据类型不一致的话可以进行隐式转换
        1.数字 + 字符串:将数字转换为字符串,进行拼接操作
        2.数字 + 布尔:布尔类型转换为数字,做加法运算
        3.字符串 + 布尔:将布尔类型转换为字符串,进行拼接操作
        4.布尔 + 布尔:将布尔转换成数字,做加法运算
        注意:
            任何数据类型与字符串做"+"运算时,都是先转换为字符串再做拼接
    2.强制转换(显式转换/转换函数)
        1.toString()
            将任意类型的数据转换成字符串,并返回转换后的结果
            var num = 15;
            var r = num.toString();

            var num = 15;
            var r = num + "";
        2.parseInt()
            作用:将任意类型的数据尽量转换成整数,如果实在是无法转换的话,则返回NaN(Not a Number)
                1.var r = parseInt("13")  r:13
                2.var r = parseInt("13.5") r:13
                3.var r = parseInt("13你好") r:13
                4.var r = parseInt("你好13") r:NuN
        3.parseFloat()
            作用:尽量将任意类型的数据转换为小数
        4.Number()
            作用:将指定的数据转换成数字,只要包含非法字符的话,结果就为NaN
            1.var r = Number("13")  r:13
            2.var r = Number("13.5") r:13.5
            3.var r = Number("13.5你好") r:NaN
            var salary = prompt("请输入本月工资:") 在网页中弹出窗口来输入,相当于input
            注意:
                只要从网页中获取到的数据,永远都是string类型的
流程结构
    1.顺序结构
    2.分支结构(选择结构)
    3.循环结构
1.分支结构
    1.作用
        根据条件,选择某一段代码去执行
    2.if 结构
        1.if(条件){
            满足条件要执行的代码块
        }
        注意:
            1.if后的{}是可以省略的,如果省略的话,则只控制该结构下的第一条语句
            2.条件尽量使boolean类型的,如果不是,一下条件当成假运算:
                1.if(0){}
                2.if(0.0){}
                3.if(""){}
                4.if(NaN){}
                5.if(underfined){}
                6.if(null){}
        2.if(){
            语句块1
        }else{
            语句块2
        }


        3.if(条件1){
            语句块1
        }else if(条件2){
            语句块2
        }else if(条件3){
            语句块3
        }else{
            语句块4
        }
    3.switch 结构
        场合:只有在等职判断时使用
        语法:
            switch(变量){
                case 值1:
                    语句块1
                    break;
                case 值2:
                    语句块2
                    break;
            }
            注意:
                1.变量和各个case快后面的值时使用===的方式来判断的
                2.如果case后不增加break的话,则从匹配的case开始,向下一次执行(不判断),直到结束或碰到break为止
2.循环结构
    1.循环的作用
        重复的执行相同或相似的代码
    2.循环二要素
        1.循环条件
        2.循环操作(循环体)
    3.while 循环
        1.语法
            while(条件){
                循环体
            }
    4.do ... while 循环
        1.语法
            do{
                循环体
            }while(条件);
        2.流程
            1.先执行循环体
            2.判断循环条件
            3.如果条件为真,则继续执行循环操作,否则推出循环
    5.循环的流程控制
        1.break
            用在循环体内,哟美好与跳出整个循环结构
        2.continue
            用在循环体内,用于跳出本次循环,继续执行下次循环
    6.for循环
        1.while
        var i=1;//循环条件的声明
        while(i <= 100)//循环条件的判断{
            console.log(i);//循环操作
            i++;//更新循环变量
        }
        2.for语法
            for(表达式1;表达式2;表达式3){
                循环操作
            }
        表达式1:循环条件的声明
        表达式2:循环条件的判断
        表达式3:更新循环变量

        流程:
            1.限制性表达式1,声明循环条件(执行1次)
            2.判断表达式2的值,true 或 false
            3.如果为true,则执行循环操作
              如果为false,则推出循环
            4.执行完循环操作之后,在执行表达式3
            5.再判断表达式2的值,同步走2
        3.for VS while
            1.相同点
                先判断循环条件,再执行循环操作的结构
            2.不同点
                while:优先用在不确定循环次数的场合下
                for:优先用在确定循环此时的场合下
===========================================================================
1.循环的嵌套
    允许在一个循环的内部再出现循环
2.函数
    1.什么是函数
        函数,即func,是一段预定义好,可以独立执行并包含多条执行语句的代码块
        优点:
            1.多条执行语句的封装
            2.实现了代码的复用
    2.在JS中创建函数
        function 函数名称(参数列表){
            函数体
            [返回值]
        }

        参数列表:
            如果没有参数,可以为空
            如果有参数,就编写参数列表。如果参数是多个的话,各个参数之间使用","隔开
            有参数的函数,在调用时就要传参,如果为传参的话,参数的值就是undefined

        返回值:
            在函数体内,经过运算后,需要传递给函数调用者的一个值,就是返回值。
            返回值时可选的,有返回值的话,需要使用return进行返回,最多只能返回一个值
       3.函数的调用:
          在任意的JS合法的位置处,都允许做函数的调用

          var ret = 函数名(参数列表);
          有参数,则传参,否则,为空
          有返回值,可以接收,否则不接收
       4.变量的作用域
        1.什么是变量的作用域
            变量的作用域指的时变量的可访问范围
        2.作用域的分类
            1.局部变量
                使用var关键字声明在某个函数内的变量,都是局部变量

                局部变量只能在声明的函数中使用,除了函数则无法使用
            2.全局变量
                1.在function之外声明的变量都是全局变量
                2.声明变量不适用var关键字的时候,都是全局变量
                全局变量可以应用在各个函数中以及各个位置处

            注意:全局变量,推荐放在所有的function之外,使用var关键字去声明
3.数组 - Array
    1.什么是数组
        数组(Array)是一个用于保存批量数据的数据结构
        数组是按照线性结构来保存数据的
    2.创建数组
        1.创建一个空数组
            var 数组名 = [];
        2.创建数组并初始化元素
            var 数组名 = [元素1,元素2,... ...];
        3.创建一个空数组
            var 数组名 = new Array();
        4.创建数组并初始化元素
            var 数组名 = new Array(length);
            length 表示是初始化的长度,length为number类型
    3.数组的使用
        获取 或 设置数组的元素值,一律使用下标
        下标从0开始,到数组元素个数-1结束
4.获取数组的长度
        属性:length
        用法:数组名.length
        1.使用场合
            1.能够找到数组中,最新要插入元素的位置(即向数组尾部增加元素时使用)
            2.清空数组
                江湖组的length属性设置为0,即表示清空数组中所有的元素
            3.配合循环,遍历数组中的每一个元素
            //从头遍历到尾
                for(var i=0;i<arr.length;i++){
                    console.log(arr[i]);
                }
            //从尾遍历到头
                for(var i=arr.length-1;i>=0;i--){
                    console.log(arr[i]);
                }
5.常用API
    1.toString()
        作用:将数组转换成字符串
    2.join(seperator)
        作用:返回一个由seperator连接的数组元素的字符串
    3.reverse()
        作用:反转
        注意:该函数会改变现有数组的结构
    4.sort()
        1.作用
            对现有数组的内容进行排序
            默认是按照元素的unicode码升序排序
        2.注意
            该函数会改变现有数组的结构
        3.允许通过自定义的排序规则来指定数字的排序方式
            语法:arr.sort()排序函数;

            1.升序的排序函数
                func sortAsc(a,b){
                    return a-b;
                }
                1.将sortAsc指定为排序函数
                2.数组会自动的将相邻的两个数字传递到参数的位置处
                3.如果返回值是>0的数字的话,则交换两个数字的位置,否则不变

                指定排序函数:
                arr.sort(sortAsc);
            2.使用匿名函数指定排序规则
                匿名函数:是一个没有名称的函数,只为某一个功能而用
                arr.sort(function(a,b){return a-b;})

===================================================================
1.数组
    1.进出栈操作
        栈式操作:提供了快速操作数组头部和尾部元素的方法
        1.push()
            入栈,压栈,向数组尾部增加新元素,并返回新数组的长度
                arr[arr.length] = "张三丰";
                arr.push("张三丰")
        2.pop()
            出栈,弹栈,删除并返回数组尾部的元素
        3.unshfit()
            向数组的头部添加新元素并返回数组的长度
        4.shift()
            删除并返回数组头部的元素
    2.二维数组
        1.什么是二维数组
            数组中的每个元素又是一个数组
2.字符串 - string
    1.声明字符串
        var str1 = "";
        var str2 = String("");
        var str3 = new String("");

    2.length属性
        作用:返回当前字符串中字符的个数
    3.常用函数 - String API
        1.大小写转换函数
            1.toUpperCase()
                返回当前字符串的完全大写形式
            2.toLowerCase()
                返回当前字符串的完全小写形式
        2.获取指定位置的字符 或 字符的 Unicode码
            1.获取指定位置的字符
                函数:charAt(index)
            2.获取指定位置的字符的Unicode码
                函数:str.charCodeAt(index)
        3.检索字符串
            1.indexOf(value,fromIndex)
                value:要查找的子字符串
                fromIndex:从哪个下标位置处开始查找,二u过省略,则从第一个字符出开始查找
                返回值:返回value第一次出现的下标,如果没有查询到字符出的话,则返回-1
            2.lastIndexOf(value,fromIndex)
                作用:查找value最后一次出现的下标
        4.截取子字符串
            函数:substring(start,end)
            作用:返回从start到end-1之间的字符串,如果省略end的话,则截取到整个字符串的尾部
        5.分割字符串
            作用:将一个有指定连接符的字符串,按照连接符给拆开,拆分成一个字符串数组
            函数:split(seperator)
        6.模式匹配
            1.作用
                配合着正则表达式完成字符串的查找和替换
            2.正则表达式
                语法: /正则格式/修饰符
                    修饰符:
                        i:ignorcase(忽略大小写)
                        g:global(全局匹配)
                        m:multiple(允许多行匹配)
            3.函数
                1.replace(substr/regexp,replacement)
                    作用:在一个字符串中,将substr或满足regexp格式的字符串替换成replacement
                2.match(subtr/regexp)
                    按照指定的子字符串或正则表达式进行匹配,并返回满足格式的子字符串(数组)
3.其他内置对象
    1.JS中对象分类
        1.内置对象 - ES提供
        2.外部对象
            1.window(BOM)
            2.document(DOM)
        3.自定义对象 - function

        对象:包含属性 和 方法(函数)
    2.RegExp对象
        RegExp - Regular Expression
        1.创建RegExp对象
            1.var regExp = /匹配模式/修饰符;
            2.var regExp = new RegExp("匹配模式","修饰符");
        2.RegExp对象的方法
            1.test(string)
                string:要验证的字符串
                作用:验证string是否满足当前正则表达式对象的格式。如果string满足正则表达式的话,则返回true,否则返回false
        3.Math 对象
            1.作用
                执行与数学相关的运算和数据
            2.属性
                Math.PI:表示Π
                Math.E:表示自然对数
            3.方法
                1.三角函数
                    Math.sin()
                    Math.cos()
                    Math.tan()
                2.计算函数
                    Math.sqrt(x):开方
                    Math.log(x):求对数
                    Math.pow(x,y): 求x的y次方
                3.数值函数
                    Math.abs(x):求x的绝对值
                    Math.max(a,b,c,d):求一组数据中的最大值
                    Math.min(a,b,c,d):求一组数据中的最小值
                    Math.random():生成0-1之间的随机数
                    Math.round(x):将x四舍五入到整数
                4.Date对象
                    1.作用
                        获取客户端的时间日期
                    2.创建Date对象
                        1.获取当前日期时间
                            var now = new Date();
                        2.初始化自定义日期时间对象
                            var date = new Date("2018/06/13 17:20:20")
                        3.方法
                            1.读取或设置当前时间的毫秒数
                                1.getTime()
                                    返回自1970-1-1 00:00:00到date 对象所经过的毫秒数
                                2.setTime(毫秒数)
                                    根据给定的毫秒数,结合1970-1-1 计算日期
                        2.读取时间分量
                            1.getFullYear()
                                获取当前日期对象的思维年份数
                            2.getYear()
                                返回自1900年以来,到目前日期对象所经过的年数
                            3.getMonth()
                                返回0-11的数字来表示1-12月
                                需要得到当前月份的值,需+1
                            4.getDate()
                                返回当前日期对象的日
                            5.getDay()
                                返回当前日期对象的星期几
                                返回0-6表示星期日-星期六
                            6.获取时间
                                getHours():获取小时
                                getMinutes():获取分
                                getSeconds():获取秒
                                getMilliseconds():获取毫秒
                            7.转换为字符串
                                1.toString()
                                2.toLocalString()     按照中国日期显示时间 
                                3.toLocalTimeString() 只有日期
                                4.toLocalDateString() 只有时间
=====================================================================================
1.外部对象
    1.BOM 和 DOM
        BOM:Browser Object Model
            浏览器对象模型
            将浏览器比喻成一个对象 - window(网页初始化时会自动创建),可以通过该对象灵活的操作浏览器
        DOM:Document Object Model
            文档对象模型
            将HTML文档比喻成一个对象 - document,可以灵活的操作网页上的内容,该对象属于window的属性之一,使用时不用声明
2.window对象(BOM模型)
    1.作用:
        在JS中表示浏览器窗口
        window下的属性和方法在使用的过程中,可以省略window.而直接使用属性和方法
            window.alert() -> alert()
            window.document -> document
            window.history -> history
    2.window中的对话框
        1.警告框
            window.alert() / alert()
        2.输入框
            window.prompt() / prompt()
        3.确认框
            window.confirm("想要询问的话") / confirm("想要询问的话")
            点击"确定"按钮的话,返回 true
            其余的所有的操作,返回false
    3.window中的定时器
        1.周期性定时器
            1.特点
                每间隔一段时间后,就执行一边程序,反复执行
            2.生命定时器
                var set = setInterval(function,duration)
                    fun:要周期性执行的操作,可以说匿名函数
                    duration:要建个的时间周期,以ms为单位
                    ret:返回已经创建好的定时器对象 (清除定时器时使用)
            3.清除定时器
                clearInterval(timer)
                timer:要清楚的定时器对象
        2.一次性定时器
            1.特点
                在指定的时间间隔后,只执行一次操作
            2.声明一次性定时器
                var ret = setTimeout(fun,time)
                    fun:等待一定时间后执行的操作
                    time:要等待的时长
                    ret:已启动的定时器对象
            3.清除定时器
                clearTimeout(timer);
    4.window中的属性
        1.screen属性
            作用:获取客户端显示器的相关信息
            属性:
                1.width / height
                2.availWidth / availHeight(可用的宽/高)
        2.history属性
            1.作用
                包含当前窗口所访问过的url地址们
            2.属性 & 方法
                1.属性
                    length:所访问过的url的数量
                2.方法
                    1.back():回退
                    2.forward():前进
                    3.go(num):在当前网页的基础上前进或后退几步
                    num:取值为整数,前进
                    num:取值为负数,后退
        3.localtion属性
            1.作用
                表示浏览器地址栏的信息
            2.属性 & 方法
                1.属性:href
                    表示当前窗口中挣扎浏览的网页的地址
                    如果为href复制,相当于实现网页跳转功能
                2.方法:reload()
                    重新加载当前网页,相当于刷新
        4.navigator属性
            1.作用
                包含浏览器的相关信息
            2.属性
                userAgent:显示信息
3.document对象(DOM模型)
    1.document的概述
        document对象,时DOM模型中的顶层对象,封装了所有和HTML元素相关的属性,方法以及事件

        网页在加载的时候,会在内存中生成一颗节点树(DOM树)。DOM数会封装网页上所有的内容网页上的每一个元素,每一个属性
        ,每一段文字(包括注释),都会被封装成DOM树上的一个单独的节点。

        节点分为以下几个类型:
            1.元素节点 - 表示网页中的一个元素
            2.属性节点 - 表示元素中的一个街道
            3.文本节点 - 表示元素中的文本内容
            4.注释节点 - 表示网页中的注释内容
            5.文档阶段 - 表示整个HTML文档
        DOM中所提供的操作:
            1.查找结点
            2.读取节点信息
            3.修改节点信息
            4.删除节点
            5.创建节点
    2.查找结点
        1.通过元素id查找节点
            前提:元素一定要具备id属性,否则无法查找
            document.getElementById("元素ID");
            DOM属性:
                1.innerHTML
                    修改/获取/设置当前DOM对象的HTML文本
                2.innerText
                    修改/获取/设置当前DOM对象的普通文本
                3.value
                    该属性只针对表单控件,允许获取或设置表单控件的值
    3.读取节点的信息
        1.节点的类型
            属性:nodeType
            值:
                返回1:元素节点
                返回2:属性节点
                返回3:文本节点
                返回8:注释节点
                返回9:文档节点
        2.节点的名称
            属性:nodeName
                元素节点 & 属性节点: 元素名 或 属性名
                文本节点:返回 #text
                文档节点:返回 #document
    4.获取 或 设置 元素节点的 属性值
        1.getAttribute(attrName)
            作用:获取指定属性的值
            返回值: attrName属性对应的值
        2.setAttribute(attrName,attrValue)
            作用:修改或设置指定属性的值
            attrName:要修改或设置指定属性的值
            attrValue:要修改或设置的值
        3.removeAttribute(attrName)
            作用:将attrName属性从节点中移除出去
        4.通过DOM对象.属性名 获取或设置属性值
            注意:class属性不适用与该方式
    5.元素的样式(CSS)
        1.使用 setAttribute 设置 class 属性的值elem.setAttribute("class","类选择器");
        2.使用元素的className属性修改class值
            var div = $("container");
            div.className = "red";
            注意:
                不能使用 elem.class = "类选择器名称"
        3.使用内联方式设置属性值
            elem.style.css属性名=值;
            elem.style.color="red";

            注意:
                如果CSS属性中包含“-”,那么“-”要取消,并且后面单词的第一个字符要变大写
                1.font-size
                    elem.style.fontSize="12px";
                2.border-right-color
                    elem.style.borderRightColr="red";
2.DOM - 查询节点
    1.根据ID查询节点
        document.getElementById()
    2.根据层级节点结构查询
        1.parentNode
            根据当前的节点的层级结构,返回父元素节点
        2.chileNodes
            根据当前的节点的层级结构,返回当前元素的所有子元素数组
            注意:能够获取所有的文本节点和元素节点
        3.children
            根据当前节点的层级结构,返回当前元素的所有子元素节点数组(只返回元素节点)
        4.nextSibling
            获取当前节点的下一个兄弟节点
        5.nextElmentSibling
            获取当前节点的下一个元素兄弟节点
        6.previousSibling
            获取当前节点的上一个兄弟节点
        7.previousElementSibling
            获取当前节点的上一个元素兄弟节点
    3.通过标签名称获取页面元素
        语法:document|elem.getElementsByTagName("标签名")    前方时限制查找的范围document时查找整个网页
        返回值:返回包含指定标记的元素数组们
    4.通过元素的name属性值获取元素
        语法:documen.getElementsByName("name");
        返回值:包含指定name属性值的元素的数组
    5.通过元素的class属性值获取元素
        语法:document|elem.getElenmentsByClassName("class")
        返回值:返回包含class属性值的所有元素
==============================================================================
1.DOM
    1.增加节点
        1.创建节点
            语法:
                var elem=document.createElement("元素名");
        2.增加节点
            将创建好的元素增加到网页中
            1.document.body.appendChild(elem)
                向body中追加elem新元素
            2.parentNode.appenpChild(elem)
                向parentNode的内部醉驾elem新元素
                parentNode可以表示页面上的任意节点一个节点
            3.parentNode.insertBefore(newElem,oldElem)
                将newElm插入到parentElement中oldElem之前
    2.删除节点
        在DOM中,删除节点的行为操作只能由父元素发起
        1.删除body中的子元素
            document.body.removeChild(elem);
        2.删除其他元素的子元素
            parentNode.removeChild(elem);
            删除parentNode中的elem子元素
2.时间
    1.什么是事件
        通常由用户的行为来激发的操作
    2.触发事件的行为
        所有的事件在绑定的时候,前面要加 on
        1.鼠标事件
            click:鼠标单击事件
            mouseover:鼠标移入进元素激发的事件
            mouseout:鼠标移出元素时激发的事件
            mousemove:鼠标在元素内移动时的事件
        2.键盘事件
            keydown:键位按下时事件
            keypress:键位按下时事件
            keyup:键位抬起时事件
        3.状态改变事件
            load:当元素加载完成时激发的事件
            change:元素发生改变时激发的事件(select)
            focus:当元素获取焦点时处罚的事件
            blur:当语速失去焦点时处罚的事件
            submit:当表单被提交时处罚的事件
    3.绑定事件的方式
        1.在元素中绑定事件
            语法:<标记 on时间名="执行函数()">
            ex:
                1.为div元素绑定鼠标移入事件
                    <div οnmοuseοver=""></div>
                2.为body绑定load事件
                    <body οnlοad=""></body>
        2.在js中动态的为元素绑定事件
            var div = document.getElenmentById("d1");
            div.on事件名=function(){
                事件操作
            }

        注意:
            在动态绑定事件中,在事件处理函数内,允许通过this关键字,来表示当前的元素(DOM元素)
    4.事件行为
        1.load 事件
            常用:为body绑定load事件,目的时为了在所有内容都加载完成之后再执行的操作要放在此处
            1.<body οnlοad=""></body>
            2.JS中动态绑定
                window.onload = function(){

                }
        2.submit 事件
            只有在表单被提交时才会触发
            注意:该事件需要一个布尔类型的返回值来通知表单是否要提交。返回为true,可以提交表单,返回为false则
            阻止表单提交
    5.事件对象(事件参数对象,event对象)
        1.什么是事件对象
            任何一个事件在触发后,都会自动产生一个event对象。
            event对象中包含与当前事件相关的一些属性和方法
        2.获取 event 对象
            1.在html元素中绑定事件
                <标记 on事件名="btn()">
            2.在js中动态为元素绑定事件
                var d1 = $("d1");
            3.事件对象的常用属性
                1.事件源
                    1.什么是事件源
                        触发当前事件的元素是谁
                    2.获取事件源
                        通过 event.target 获取事件源
                        事件源是一个DOM对象
                2.鼠标事件(事件对象的常用属性)
                    鼠标事件:
                        click,mouseover,mouserout,mousemove
                    1.offsetX,offsetY
                        获取鼠标在元素上的坐标点
                        以元素的左上角为(0,0)
                    2.clientX,clientY
                        获取鼠标在网页上的坐标点
                    3.screenX,screenY
                        获取鼠标在屏幕上的坐标点
                3.键盘事件(事件对象的常用属性)
                    键盘事件:keypress,keydown,keyup
                    1.keypress
                        1.which
                            当前按下的字符的ASCII
                        2.key
                            当前按下的字符
                        注意:该事件允许通过一个返回值,通知元素是否要处理该事件。返回值为true,则正常显示输入的字符,
                        返回值为false,则终止显示
                    2.keydown
                        只要按下键盘键位时就会被触发,无论是否由字符的输入
                        1.which
                            当前按下键位的键位码
                            只区分按键,并不区分大小写
                            大小写字符,时同一键位,所以键位码相同
                        返回值 同keypress
======================================================================================
1.事件
    1.事件冒泡
        1.什么是事件冒泡
            当激发子元素事件时,同时把父元素对应的事件也给执行了
            场合:
                1.必须是父子结构或具备层级关系的元素
                2.必须同时设置了相同的事件
        2.阻止事件冒泡
            让该事件在当前元素中执行,不向上冒泡
                event.stopPropagation();
2.jQuery
    1.jQuery介绍
        jQuery时一个轻量级的JS库 - 是一个被封装好的JS文件,提供了更为简便的元素操作方式
        jQuery封装了DOM
        jQuery核心理念:Weite Less Do More
    2.使用jQuery文件
        1.引入jQuery文件
            <script src=""></script>
            注意:该文件的引入操作必须要放在jQuery操作之前
    3.jQuery对象
        1.什么时jQuery对象
            jQuery对象是由jQuery对页面元素进行封装后的一种体现
            jQuery中所提供的所有操作都只针对jQuery对象其他对象(DOM对象)无法使用
        2.工厂函数 - $()
            想要获取jQuery对象的话,则必须使用工厂函数$()
            在$()中允许传递一个选择器/DOM对象作为参数,$()能够将选择器 和 DOM对象全部封装成jQuery对象再进行返回
            $()等同于getElement
         3.DOM对象 和 jQuery对象之间的转换
            DOM对象:不能使用jQuery提供的操作
            jQuery对象:不能使用DOM提供的操作

            1.将DOM对象转换为jQuery对象
                语法:var 变量=$(DOM对象);
                注意:所有的jQuery对象在起名的时候,最好在变量前加$,主要用于和DOM对象的区分
            2.将jQuery对象转换为DOM对象
                1.var dom对象=jQuery对象[0];
                2.var dom对象=jQuery对象.get(0);
3.jQuery选择器
    1.作用
        获取页面上的元素们,返回值都是由jQuery对象所组成的数组
        语法:$("选择器")
    2.常用选择器
        1.基本选择器
            1.ID选择器
                $("#id");
                返回:返回页面中指定ID值的元素
            2.类选择器
                $(".className")
                返回:页面中指定className的所有元素
            3.元素选择器
                $("element")
                返回:页面中指定标记的所有元素
            4.群组选择器 / 符合选择器
                $("selector1,selector2,..")
                返回:返回满足函数内所有选择器的函数们
        2.层级选择器
            1.$("selector1 selector2")
                后代选择器
            2.$("selector1>selector2")
                子代选择器
            3.$("selector1+selector2")
                名称:相邻兄弟选择器
                作用:匹配紧紧更在selector1后面且满足selector2选择器的元素
            4.$("selector1~selector2")
                名称:通用兄弟选择器
                作用:匹配selector1后面所有满足selector2选择器的元素
        3.基本过滤选择器
            过滤选择器通常都会配合着其他的选择器一起使用
            1.:first
                只匹配一组元素中的第一个元素
                $("p:first")
            2.:last
                只匹配一组元素中的最后一个元素
            3.:not("selector")
                在一组元素中,将满足selector选择器的元素排除出去
            4.:odd
                匹配 偶数行 元素(奇数下标)
            5.:even
                匹配 奇数行 元素(偶数下标)
            6.:eq(index) -- equals
                匹配 下标等于 index 的元素
            7.:gt(index)
                匹配 下标大于 index 的元素
            8.:lt(index)
                匹配 下标小于 index 的元素
        4.属性过滤选择器
            依托于html元素的属性来进行元素过滤的
            1.[attribute]
                作用:匹配包含指定属性的元素
                ex:
                    div[id]:匹配具备id属性的div元素
            2.[attribute=value]
                作用:匹配attribute属性值为value的元素
                ex:
                    input[type=text]
            3.[attribute!=value]
                作用:匹配attribute属性值不是value的元素
            4.[attribute^=value]
                作用:匹配attribute属性值是以value字符开头的元素
                ex:
                    p[class^=col]
            6.[attribute*=value]
                作用:匹配attribute属性值中包含value字符结尾的元素
        5.子元素过滤选择器
            1.:first-child
                匹配属于其父元素中的首个子元素
            2.:last-chiled
                匹配属于其父元素中的最后一个子元素
            3.:nth-child(n)
                匹配属于其父元素中第n个子元素
4.jQuery操作DOM
    1.基本操作
        1.html()
            作用:获取 或 设置jQuery对象中的html内容,传参数是设置值不传参是获取
        2.text()
            作用:获取 或 设置 jQuery对象的text内容
        3.val()
            作用:获取 或 设置 jQuery对象中的value值(表单控件)
        4.属性操作
            1.attr()
                作用:读取 或 设置jQuery对象的属性值
                ex:
                    1.$obj.attr("id");
                        获取$obj的id属性值
                    2.$obj.attr("id","main");
                        设置$obj对象的id属性值为main
            2.removeAttr("attrName")
                删除jQuery对象的attrName属性
                ex:
                    $obj.removeAttr("class");
    2.样式操作
        1.attr()
            $obj.attr("class","redBack")
        2.addClass("className")
            作用:将className 添加到元素的class值之后
            ex:
                $obj = $obj.addClass("c1");
                $obj = $obj.addClass("c2");
            连缀调用:
                $obj.addClass("c1").addClass("c2");
        3.removeClass("className")
            如果无参的话,则清空类选择器
            如果有参数的话,则删除对应的类选择器
        4.toggleClass("className")
            切换样式:
                元素如果具备className选择器,则删除
                元素如果没有className选择器,则添加
        5.css("属性名")
            $obj.css("width")
            获取$obj对象的width属性值
        6.css("属性名","属性值")
            $obj.css("background-color","yellow")
            设置$obj对象的background-color的属性值为yellow
        7.css(JSON对象)
            JSON对象:
                是一种约束了格式的对象表现形式
                JSON:JavaScript Object Notation
            JSON对象的表现方式:
                1.JSON对象必须使用{}括起来
                2.使用键值对的方式来声明数据(表示属性和值)
                3.所有的属性在使用时必须使用""括起来,值如果时字符串的话,也必须使用""括起来
                4.属性和值之间使用:连接
                5.多对属性和值之间使用,隔开
    3.遍历节点
        1.children() / children("selector")
            获取某jquery对象的所有子元素 或 带有指定选择器的子元素
            注意:只考虑子代元素,不考虑后代元素
        2.next() / next("selector")
            获取某jquery对象的下一个兄弟元素
        3.prev() / prev("selector")
            获取某jquery对象的上一个兄弟元素
        4.siblings() / siblings("selector")
            获取某jquery对象的所有兄弟元素 / 满足selecor的所有兄弟元素
        5.find("selector")
            查找满足elector选择器的所有后代元素
    4.创建对象
        语法:$("创建的标记")
        ex:
            1.创建一对div
                var $div = $("<div></div>")
                $div.html("动态创建的div")
                $div.attr("id","container")
            2.创建一堆div
                var %div = $("<div id='container'></div>")
    5.插入元素
        作用:将创建好的元素插入到网页中
            1.内部插入
                作为元素的子元素插入到网页中
                1.$obj.append($new);
                    将$new元素插入到$obj元素中的最后一个子元素位置处(追加)
                2.$obj.prepend($new);
                    将$new元素插入到$obj元素中的第一个子元素位置处
            2.外部插入
                作为元素的兄弟元素插入到玩也中
                1.$obj.after($new);
                    将new元素作为$obj的下一个兄弟元素插入进来
                2.$obj.before($new);
                    $new元素作为$obj的上一个兄弟元素插入进来
    6.删除元素
        $obj.remove();
            将$obj元素删除出去
5.jQuery中的事件处理
    1.页面加载后的执行
        类似与window.onload 但不同于 window.onload
        jQuery加载后执行的特点:
            在dom树加载完毕的时候就开始执行
        1.$(document).ready(funcation(){
            //页面的初始化操作
            //DOM树加载完成后就开始运行
        });
        2.$().ready(funcation(){
            //页面的初始化操作
            //DOM树加载完成后就开始运行
        });
        3.$( funcation(){
            //页面的初始化操作
            //DOM树加载完成后就开始运行
        });
    2.jQuery的事件绑定
        1.方式1
            $obj.bind("");
            ex:
                $obj.bind("click",function(){
                    //事件的行为操作
                    console.log(".....");
                });
        2.方式2
            $obj.事件名称(function(){
                //事件处理函数
            });
            ex:$obj.click(function(){});
    3.事件对象 - event
        再绑定事件的时候,允许传递 event 参数来表示事件对象
        1.obj.bind("click",function(event)());
        2.$obj.click(function(event){});

        event的使用方式与原生JS事件中的event使用方法一直;
        event.stopPropagation():组织事件冒泡







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值