JS基础笔记集 您所在的位置:网站首页 js数字每三位加逗号简洁版 JS基础笔记集

JS基础笔记集

2024-01-03 13:20| 来源: 网络整理| 查看: 265

three.js:3D框架  svgtween:动画框架

一.js事件的组成:on+事件名,当触发某个事件做一些事情;   如:onclick:当点击鼠标,触发的事件;

二.在写一个页面时,结构(html)、样式(css)和行为(js)是要分离出来的;    好处:代码可复用,可读性好,可维护性好;

三.通过js获取元素方法:    1>通过元素中的id名,获取元素:document.getElementById("id名");    2>通过元素名,直接获取元素:getElementsByTagName("元素名");这里获取后,返回的是集合,是一组元素;        (1)用法:               a.document.getElementsByTagName("标签名");               b.元素.getElementsByTagName("标签名");        (2)查看取到集合的长度:使用length;               console.log(要打印的内容):向控制台里面输入要打印的内容;        (3)当取一个集合里面的内容的时候,要用到下标(数字),这个集合的下标是从0开始的;        (4)获取设置属性值的方式:点(.)                如果属性名,不符合变量的命名规则,要用到[]                    如:abc.0 ---->  这里的0,abc里面没有0这个属性,不可以使用点的方式。要用abc[0];

四.函数的定义:    function (){} //匿名    function show(){};

五.函数的调用:        函数名();        事件调用;   注:函数定义后,一定要调用才有会意义;

六.操作元素:    1>第一种形式:点(.)    获取:            1. oDiv.style.width 形式只能获取行间的样式;            2. class:是一个保留字,属性的名也不能用保留字命名;        注意:如果要获取class的值,需要用到className;            3. innerHTML获取元素里面的内容;        赋值:            oDiv.innerHTML = "abc";            赋值的过程:先清空掉元素里面的值,在赋值新的值;

七.变量:    作用:用来存放数据;    写法:var 变量名 = 要存放的数据;    好处:存一次,可以多次复用,把复杂的数据简单化;    变量名的规则:

    1. 是由数字、字母、下划线、$组合而成的;     如:ab a_b a$b a0b...    注意:变量名不能用数字开头;不允许的:0ab 1ab 0 1;

    2. 不能使用保留字和关键字;     关键字:js语法中正在使用的单词;            如:var function...     保留字:可能js以后用到的单词;      如:class...

八.window.onload:(先加载再执行)    当页面的资源加载完成之后,会触发这个事件,执行后面的函数;    cssText:批量设置样式的,先清空掉设置在行间中的样式,在设置新的样式值;

九.变量命名风格:  1. 匈牙利命名法:        o + 单词  o代表的就是object;        如:oDiv oBtn oInput    a +单词  a代表的就是array;            如:aLi aDiv        i + 单词 i 代表的是int;            如:iNum

  2.驼峰命名法:        1>多个单词组合而成的命名的时候,第一个单词不大写,后面的单词首字母大写;            如:oneDiv  oDivWidth oDivHeight        2>复合样式用作属性的时候,同样的遵循变量的命名规则            style属性下有很多的复合样式;         如:font-size  background-color margin-top            注:把复合样式中间的-去掉,跟的后面的单词首字母大写;

十.流程控制:    1>for循环:        语法:for(初始化;条件;自增){循环体};            a.初始化:准备循环的工作,可以写也可以不写;            b.条件:如果这个条件为真(成立),进入循环体执行代码。如果这个条件始终为true,就会死循环;            c.自增:当循环体结束后 ,再把初始得值自增;        for循环中的break与continue;            break:当程序执行遇到break时,停止运行for循环,break后面的内容是不会在运行;            continue:当程序执行遇到continue时,会跳过当前循环,后面程度不执行;

    2>if判断:        语法:(1).if(条件){ 代码体 };当条件成立,为true时,执行代码体中的程序,否则直接执行后面代码;              (2).if(条件){ //当条件成功立,执行代码体,否则执行代码体1;                    代码体                  }else{                    代码体1                  }        说明:在进行判断时,注意以下几点:              (1).img标签中的src,不可以作判断。因为得到的是绝对路径;(标签中的src可读可写)              (2).a标签中的href,不可以作判断。因为得到的是绝对路径的地址;(标签中的href可读可写)              (3).background属性中的url、color值,都不可以作判断;

    3>三目:        语法:条件 ? 执行1 :执行2;        说明:当条件成立,为true时,程序走"执行1"中的代码;为false时,程序走"执行2"中的代码;              这里的条件,默认为true;        例:var onOff = true,num = 0;            onOff ? num = 10 : num = -100;

    4>switch  case: 相当于if else if的另一种写法        语法:             switch(变量){              case 值1:                  //当变量满足值1的时候,执行的代码              break; //终止向下运行              case 值2:               //当变量满足值1的时候,执行的代码              break; //终止向下运行              case 值3:               //当变量满足值1的时候,执行的代码              break; //终止向下运行              default:               //以上条件都不满的时候执行的代码              [break]        说明:当判断一个变量的值有不同结果,执行不同的代码的时候 ,可以用switch代替if;

十一.运算符:参与运算的符号;       运算数:参与运算的值;         1.算术运算:+ , - , * , / , %;

         2.赋值运算:= += -= *= /= %=;            a.%:取模/取余/取得都是整数;                 例:a % b;                     a> 当a比b大,取两数相除的余数(取的是整数);                     b> 当a比b小,运算后的就是a;                     c> 当a等于b,运算后得0;

         3.比较运算:== === >= 如果前面为真,返回后面的值(无论真假都返回);             2>如果前面为假,就返回前面的值;

            b.||(或/或者):两边只要有一个为真,整体就为真。             2>如果前面为真,返回前面的值;             3>如果前面的假,返回后面的值(无论真假都返回);

            c.!(非) 用法:!数据                操作过程:先把数据转换为布尔值,然后取反;                !!+数据:先把数据转换为布尔值,然后取反,再取反;(最后取的是本身的布尔值)

         5.typeof:测试返回数据的类型,属于运算符;            使用方法:              typeof 数据           typeof(数据) 不建议使用的            typeof运算后取的类型值:            1. "number"                 2. "string"            3. "boolean"            4. "undefined"            5. "object"            6. "function"            typeof返回的类型值跟数据类型有区别              特殊:                   1.null  返回的是 "object";                     2.function(){}  返回的是"function";

     说明:比较运算和逻辑运算后,整体会返回一个布尔值;

十二.this:    含义:哪一个对象调用了这个函数,那么这个函数里面的this就指向调用的那个对象;    调用方法:this一共有6种调用方法;    在全局中,this指的是window;如:var a =0;  console.log(this.a); //这里this指的就是window;    1> 函数调用:        如:function abc(){            this.value; //谁调用这个函数,this指的就是谁        }

    2> 事件调用:        如:var oDiv = document.getElementById("div");            oDiv.onclick = function (){                this.style.background = "red";   //这里的this,指的是调用onclick事件的div;            }

    3> 定时器调用:        如:setTimeout(function(){                //定时器里面的函数,永远是被window调用的,所以这里的this指的是window;                console.log(this);            });

    4> 对象调用:

    5> 构造函数调用:

    6> 原型链调用:

十三.路径说明:"./":代表当前路径,在开发过程中,要把./写上,为的是所有服务器都认得;               "../":上一层文件路径;     如何去掉a标签默认链接的点击行为:在href中写"javascript:void(0);";

十六.数据类型:     数据类型,可以分为两种类型:1>基本数据类型;2>复合数据类型;     1>基本数据类型为:         1. Number类型;            整数:0 1 2 3,-2...            浮点数: 0.1,1.4...            取值范围:+Infinity 和 -Infinity(正无穷和负无穷);         2.String类型:一对单引号或者双引号包含的内容,内容有0个或者多个字符组成;            空字符串:"",''            引号是成双成对的,"",''            不能够写成 " ';         3.Boolean类型:            只有两个值:true false;做判断用;         4.Null类型:            只有一个值null;            作用:申明了一个变量,还不知道这个变量要存的值,用null来占位;         5.undefined类型:            只有一个值undefined;            声明一个变量,不给这个变量赋值,那么这个变量的默认值为undefined。     2>复合数据类型:(是由N多个简单(基本)数据类型组合而成)         6.Object类型:            值为上面五种类型的组合,数组,json对象...[]和{};

十七.数据类型转换:把一种数据类型转换成其他的类型;     1>类型转换的方式:         1)显式(强制)类型转换:自己手动去转;         2)隐式类型转换:在操作的时候自动转换;     1)显式类型转换:         1. 转换成Number类型:(转换的简写方式:+数据)                Number(值):把值转换成Number类型(这是严格转换);            转换情况:                无参数时:Number();// 0                有参数时:                    a.String => :                        1. 空字符串或空白字符串 -> 0                        2. 纯数字的字符串 -> 相对应的字符串内容                        3. 其余的 - > NaN                    b. number => number                    c. undefined => NaN                    d. null => 0                    e. boolean => true:1,false:0                    f. object =>                       {} -> NaN                       [] -> 0         2. 转换成String类型:(转换的简写方式:"" + 数据)                String(值):转换成String类型;         3. 转换成Boolean类型:              Boolean(值):转换成Boolean类型;                1). 空字符串 => false 非空字符串 => true           2). 0 => false 非0 => true           3). 对象 => true           4). undefined和null => false           5). NaN =>false          *总结:" "(空字符串) , 0 , undefined , null , NaN ====>>>这五个转boolean类型都是false;         参考网址:http://www.fengfly.com/document/ECMAScript5.1/#203

         4.parseInt(值):转换成整数,非严格转换;            转换方式:                1)从左向右转换,转换的第一个字符为数字时,会继续向后转,                      当遇到非数字的字符时,会停止转换,只返回之前可以转换的数字;                2)当转换的第一个字符为非数字时,会直接返回NaN,不会再继续向后转;

         5.parseFloat(值):转换成浮点数,非严格转换;             转换方式:                 与parseInt的转换方式一样;         6.toFixed(num):小数位数保留num个;                例:var a =23.445;                    alert(a.toFixed(2));//弹出23.44  保留了2位小数;

     2)隐式类型转换:            进行某些操作时,我们没有进行类型转换,但是为了能够正常的运行,系统就会进行类型转换;       "+ - * / < >" 遇到这些,会存在隐式类型转换;            1> "+"                1. 算术,当两边都为数字的时候,那么值就为两边的数字之和;                2. 字符串连接,当一边为字符串的时候,另一边为数字的时候,那么先把数字转成字符串,进行连接;脑垂体瘤            2>"- * / ":做算术用                当一边为字符串的时候,试图先把字符串转换成数字(调的是Number());                如果转成了数字,那么计算两数之差;如果转成了NaN,那么结果就为NaN;

            3>NaN和任何值运算都为NaN扁桃体            4> "< >":                当一边为字符串的时候,另一边为数字的时候,先试图把字符串转成数字,然后进行比较;

     3>NaN:Not a Number不是数字的数字;           a.在比较时:和任何值比较都是不相等的,包括自己;           b.如果值不能转成数字,返回的就是NaN;     说明:NaN不是一个类型,但是typeof 返回的是number类型的;

     4>isNaN(值):判断值是不是NaN;            a.如果值是NaN的话,返回true;            b.如果是数字,返回false;     说明:isNaN会隐式转换,调用的方法Number;

     5>数据类型转换规则:        a.如果只有一个值,判断这个值是真还是假,遵循只有:0、NaN、""、undefined、null 这五个是false,其余都为true;        b.如果两个值比较相等,遵循以下规则:              1>对象==对象:永远不相等;              2>对象==字符串:先将对象转换为字符串(调用toString)方法,然后再进行比较;                      []转换为字符串是:"";                      {}转换为字符串是:"[object object]";              3>对象==布尔类型:对象先转换为字符串(调用toString),然后把字符串在转换为数字(Number"" 变成 0),                       布尔类型也转换为数字(true为1,false为0),最后让两个数字比较;              4>对象==数字:对象先转换为字符串(调用toString),然后把字符串再转换为数字(Number);              5>数字==布尔类型:布尔转换为数字;              6>数字==字符串:字符串转换为数字;              7>字符串==布尔类型:都转换为数字;              8>null==undefined:结果是true;              9>null或者undefined,和任何其它数据类型比较都不相等;

十八.运算:     1.++ : 每一次加1            如:iNum++就相当于 iNum = iNum + 1;     2.+= :            如:iNum += 2; 相当于:iNum = iNum + 2;            当前这个变量存储的值+某个值(2,3)在赋给这个变量;

十九.函数:     1.函数:放的是代码片段;         语法:          匿名函数:function [函数名]([参数]){        有名函数:function 函数名(参数){                         //代码片段                              //代码片段                    }                                       }

     2.函数定义方式:           1)函数声明;                function fn(){                    //代码片段                }           2)函数表达示;                var fn = function(){                    //代码片段                }           说明:两种方式,没有太大区别,但是在调用的时候有区别。

     3.函数调用:函数名+() 如:fn();           *一个函数,如果是在全局声明的,那么在任何地方都可以被调用到。                例:                    fn();//可以在声明代码上面调用;                    function fn(){                        alert(111);                    }                    fn();//可以在声明代码下面调用;           *函数表达式,只能在将函数赋值给变量,之后调用。                例:                    fn();//这样调用会报错;                    var fn = function(){                        alert(222);                    }                    fn();//只可以在表达示代码下面调用;

     4.函数传参:         参数的定义:当函数执行的时候,传入的数据;         参数分两种:             1.形参:形式上的参数;                   定义函数的时候,写在小括号里面,多个参数的话,用逗号隔开;                   形参是作为函数的局部变量使用,命名的规则遵循变量的规则,形参只能在函数中使用;               例:                   function fn(ele,eve){//ele和eve就是形参                        //代码片段                   }               注意:当定义的形参,没有接到数据的时候,默认值就为undefined;             2.实参:实际传入的参数;                   函数执行的时候,传入的实际参数;               例:                    fn(1,3);//1和3就是实际传入函数的参数

         arguments:(存的是实际传入的参数集合)             作用:当实际传入参数的个数不确定时,就会用到arguments;             1.当函数定义的时候,就存在的一个内置变量;             2.arguments属于类数组对象:                   因为对应值的结构,和数组很像,但不是数组,类似于数组这种结构,称之为:类数组对象;             3.其中length,可以查看实际传入参数的个数;

     5.return:         return 是函数定义的时候,内部的东西;         当函数被调用的时候,都有返回值:              1>如果没有使用内部的(return 要返回的数据)的话,那么这个函数的返回值为undefined。              2>如果使用(return 要返回的数据),那么这个函数的返回值就是 要返回的数据。              3>如果return后面没写数据,那么函数的返回值为undefined。         作用:阻止函数继续向后执行,并返回相应的值;

     6.函数自执行:         如:             (function ab(){                alert(1);             })();  //这种写法就表示函数自动执行了;

     说明:          1.函数名+() 等于return 后面的值;            例:function fn(){                    return 123;                }                fn();//这里返回的是return 后面的123;          2.直接函数名,没有(),等于整个函数表达示;            例:function fn(){                    return 123;                }                fn;//这里返回的是整个函数表达示:function fn(){return 123;}二十:获取计算后的样式      1> ie低版本(6,7,8)下:(currentStyle)         写法:元素.currentStyle[属性名]      2> 标准浏览器下:(getComputedStyle)         写法:getComputedStyle(元素)[属性名]      3>如果要找某个对象身上的某个属性,         找到了,返回对应的值;         没找到,返回的是undefined;      封装getStyle方法:      1>封装参数说明:            getStyle两个参数:                第一个参数,传入的是元素                第二个参数,元素的属性                getStyle返回值:获取元素上的属性对应的值;      2>开始封装:            //简化版            function getStyle(obj,attr){                return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr];            }            //啰嗦版            function getStyle(obj,attr){                if(obj.currentStyle){//兼容ie6,7,8                    return obj.currentStyle[attr];                }else{                    return getComputedStyle(obj)[attr];                }            }            注意:if else的顺序不可颠倒,原因是:getComputedStyle()ie6 7 8 不认识,会报错;                  而currentStyle[]浏览器都认,不会报错;

二十一:作用域二十二:闭包      闭包是一种机制,在函数运行时产生一种作用域,来保护里面的变量不受外界的影响。      闭包的好处:避免全局污染;               用处:1>希望一个变量长期驻扎在内存中;           2>循环绑定事件在里面找到索引值,如选项卡案例;二十三:定时器      定时器的定义(两种方法):      1>连续触发定时器(间歇型):间隔一段时间,就会执行一段代码,直到让它停止位置;        语法:setInterval(function(){},1000);                function(){}是要执行的函数;                1000是执行的时间,单位为毫秒;1s = 1000ms;      2>延迟触发定时器(延迟型):延迟某个时间后,执行一段代码,只会执行一次。在执行前,可以停止执行;        语法:setTimeout(function(){},1000);                function(){}是要执行的函数;                1000是执行的时间,单位为毫秒;1s = 1000ms;      定时器的清除:      1>clearInterval(定时器)  //清除的是setInterval;      2>clearTimeout(定时器)   //清除的是setTimeout;二十四:时间对象      含义:可以用来获取时间的对象;      语法:1> new Date();//无参数时,获取的是当前系统时间;               2> new Date(2015,07,22,16,34);//有参数时,获取的是输入的时间;      方法:getFullYear();//获取年份;            getMonth();获取月份;(取值范围 0 ~ 11)            getDate();获取哪一天;            getDay();获取星期;(0(周日) ~ 6)国外是以周日为一周的第一天;            getHours();//获取小时;            getMinutes();//获取分钟;            getSeconds();//获取秒;            getTime();//获取毫秒数;            1天  = 24小时      1天 = 86400秒            1小时 = 60分钟     1小时 = 3600秒            1分钟 = 60秒      倒计时算法:            未来时间(固定) - 现在时间(变化) = 差值(变化)二十五:String的方法(位置都是从0开始)      获取类:          1>charAt(): 获取指定位置的字符;            用法:str.charAt();                例:var str = "abc";  alert(str.charAt()); // a                     str.charAt(number);    例:var str = "abc";  alert(str.charAt(1)); //b            返回值:是找到对应位置的字符,返回的是一个字符串;            参数:                  不传参数时: 默认参数的位置为0;                  传入的是数字:                        如果小于0,那么返回的是空字符串;                        如果大于等于字符串的长度,返回的是空字符串;

          2>charCodeAt(): 获取指定位置的字符的编码(ASCll码)            用法:str.charCodeAt();      例:var str = "a";  alert(str.charCodeAt()); //97            返回值:找到指定字符位置的编码(数字)            参数:                  不传参:默认为0;            参数范围:0 -- 字符串长度-1;如果超出范围,返回的是一个NaN;

          3>fromCharCode(): 把编码转换成字符(静态方法)            用法:String.fromCharCode();    例:alert(String.fromCharCode(97)); // a

          4>substring(): 获取截取字符串的字符;            用法:str.substring();   例:var str = "abc"; alert(str.substring(1)); //bc            返回参数:是截取到的相对应的字符串;            参数:(start,end)(第二个参数不是必须的)                如果之传入一个参数:                    start >= 0;      返回从指定位置一直截取到字符串的最后                    start < 0;       传入的参数为0                    start >= 字符串的length:返回时空字符串                传入两个参数:                    start < end;      返回start到end位置的字符,不包含end位置的字符                    start > end;      调换位置,返回 end到start之间的字符,不包含start位置的字符                    start == end;     返回空字符串

          5>slice():提取指定范围子字符串;            用法:str.slice();       例:var str = "abc"; alert(str.slice(1)); //a            返回参数:是截取到的相对应的字符串;            参数:(start,end)(第二个参数不是必须的)                  如果之传入一个参数:                        start >= 0;    返回从指定位置一直截取到字符串的最后                        start < 0;     传入的参数为0                        start >= 字符串的length;返回时空字符串                  传入两个参数:                        start < end;    返回start到end位置的字符,不包含end位置的字符                        start > end;    返回空字符串                        start == end;   返回空字符串                  start可以为负数:                        -1是字符串的最后一位                        -2是字符串的倒数第二位                        -3,-4依次向前推                  start(负数)+str.length < end(正数)   返回的是start(负数) ~ end之间的字符                  例:var str = "aiday";                      /*                        分析步骤:1.先将把-1加上str.length,-1+3=2;                                        2.再截取(2,3)的字符,打印为d;                      */                        alert(str.slice(-1,3));

            注意:substring()与slice()之前的区别:                      1.substring()只可以传入正数的数字,不可以为负数;                        slice()可以传入正数和负数的数字;                      2.substring()只可以从左向右截取数字;                        slice()输入正数时,是从左向右截取;输入负数时,是从右向左截取;

      查找类:          6>indexOf():查找某个字符串在字符串中首次出现的位置;(从左到右)            用法:str.indexOf();  例:var str = "abcabc";  alert(str.indexOf("a" , 1));// 字符串a,第1次出现的位置            参数:(字符串,searchIndex)(第二个参数不是必须的)                  只有一个参数字符串的时候:                     不传入参数:返回 -1;                     传入的是一个字符串:返回的是这个字符串首次在str出现的位置;                            var str = "bcabc";   alert( str.indexOf("ab") );                     如果没有找到指定的字符串:始终返回的是-1;                  第二个参数searchIndex的作用:                     指定从哪个位置开始向后搜索:默认值为0;

          7>lastIndexOf():查找某个字符串在字符串中最后出现的位置;(从右到左)            用法:str.lastIndexOf(); 例:var str = "abc";  alert(str.lastIndexOf());            参数:(字符串,searchIndex)(第二个参数不是必须的)                   只有一个参数字符串的时候:                        不传入参数:返回 -1                        传入的是一个字符串:返回的是这个字符串首次在str出现的位置                                例:var str = "bcabc";  alert( str.indexOf("ab") );                        如果没有找到指定的字符串:始终返回的是-1;                   第二个参数searchIndex的作用:                        指定从哪个位置开始向前搜索:默认值为str.length-1;

            注意:indexOf()与lastIndexOf()的区别:                        1.indexOf()找的是从左到右第一次出现的位置;                          lastIndexOf()找的是从右到左最一次出现的位置;

      其它:          8>split():将一个字符串通过某个分割符,转换成数组;            用法:str.split();  例:var str = "abc";  alert(str.split()); //[a,b,c]            返回值:返回的是一个数组;            参数:(分隔符,数字)                   不传参:                        会把str整体作为数组的元素;                   传入:                        就按照传入的参数,将字符串分割成数组的每一项;                   第二个参数传入的是一个正数:                        作用:保留数组元素的个数;                        例:var str ="abc";   alert(str.split());

          9>trim():去除字符串前后一个或多个空格;            用法:str.trim();  例:var str ="    abc   ";   alert(str.trim()); //"abc"            返回值:返回的是去掉空格后的字符串;

          10>toUpperCase():将字符串转为大写;            用法:str.toUpperCase();  例:var str ="abc";   alert(str.toUpperCase()); //"ABC"

          11>toLowerCase():将字符串转为小写;            用法:str.toLowerCase();  例:var str ="ABC";   alert(str.toLowerCase()); //"abc"

      比较类: >, 数字和数字比较的时候 直接比较两个数值;            alert( 1 < 2 );          2>字符串和字符串比较的时候,把两边的字符串转成相对应的编码,在进行比较;                alert( "1" < "2" );             alert( "a" < "b" );          3>数字和字符串比较,把字符串转成数字比较,如果字符串是纯数字,直接传成相对应字符串的数字进行比较;                alert( "1" < 2 );          4>如果字符串不是纯数字的,那么转成数字在进行比较;             alert( "a" < 2 );二十六:JSON      含义:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式;      语法格式:{key:value,key:value}  键:值,对的形式;      json格式的结构:1.数组 []; 2.对象 {};      json特点:json中的key值是唯一的;

      数组和对象的区别:          1. 对象没有length,除非是自己手动添加的数组自动就有length这个属性;          2. 对象的下标需要自己定义,数组不需要自己定义;

          通常情况下:1)json对象要用for in 循环;            2)数组 要用 for循环;

                语法:var json ={"userName":"zhangsan","age":23};                for(var jsonStr in json){                    console.log(json[jsonStr]);//得出所有key的value值;                }          for中的参数说明:                jsonStr:是一个变量;                json:要循环的json对象;          步骤说明:                1.先将所有的key找到,存到for循环中的变量(jsonStr)中;                2.通过json对象.key名的方式,可以找出指定的value值;                3.也可以通过json对象[变量名]的方式,可以直接找到所有json对象的value值;

      1>JSON.parse():把字符串形式的json,解析成js中可用的对象;        注意:字符串形式的json,的key值,必须是加引号的,否则JSON.parse()解析的时候会报错。        参数:(str,function(key,value){})            第一个参数:要解析的字符串;            第二个参数:回调函数;                作用:这个函数已经把解析后的key,value传入到函数中,可以在函数中修改操作key,value的值;                注意:使用这个函数时,函数内一定要有一个return;否则会报错;

      2>JSON.stringify():把json格式的对象,转换成字符串形式的json;        参数:(str,function(key,value){},[0-10])            第一个参数:要解析的json;            第二个参数:回调函数;                 作用:这个函数已经把解析后的key,value传入到函数中,可以在函数中修改操作key,value的值;                 注意:使用这个函数时,函数内一定要有一个return;否则会报错;            第三个参数:格式化转换后的字符串形式的json;                 说明:1)当输入的是数字时,范围是0-10,会在每一个key前面输入0-10个空格;                       2)当输入为字符串时,会在每一个key前面输入对应的字符串;二十七:数组(Array)            含义:一组数据的集合,是一个有序集合,用来存储一组数据;      1>定义:[] 中括号里存许多的元素,每个元素用","隔开,最后一个元素,没有",";      2>数组的取值:数组取值使用下标来取的,下标是从0开始的;length 查看数组的长度(元素的个数);      3>取出数组中元素方法:使用for循环的方式,取数组中每一个元素;

            语法:var arr =[1,2,3,4,5,6,7];//字面量格式创建                  var arr = new Array(); //对象格式创建      数组内的方法:            1.Math()相关方法:               1)Math.floor(number):向上取整;                  例:Math.floor(0.2);取的是:比0.2大的整数;得0;               2)Math.ceil(number):向下取整;                  例:Math.ceil(1.3);取的是:比1.3小的整数;得1;               3)Math.round(值):四舍五入;                  例:Math.round(1.5);// 2               4)Math.abs(值):取绝对值;                  例:Math.abs(-33);// 33               5)Math.random():生成一个随机数;                  例Math.random();//生成0--1(不包含1的随机数)

                  *Math.random():                      区间的随机数:                            0 ~ 5 :Math.round( Math.random() * 5  ); //0--5的随机数

                            0 ~ 10: Math.round( Math.random() * 10  ); //0--10的随机数

                            10 ~ 20: Math.round( Math.random() * 10 ) + 10; //10--20的随机数

                            20 ~ 80 : Math.round( Math.random() * 60 ) + 20; //20--80的随机数

                            1 ~ 5 : Math.ceil( Math.random() * 5 ) || 1; //1--5的随机数

                            0 ~ 5(不包含5): Math.floor( Math.random() * 5 ); //0--5不包含5的随机数

                      公式:                            0 ~ X : Math.round( Math.random() * X  );

                            x ~ y : Math.round( Math.random() * (y-x) ) + x;

                            1 ~ x : Math.ceil( Math.random() * x ) || 1;

                            0 ~ x-1: Math.floor( Math.random() * x );

            2.length()方法:              用法:Array.length();                    例:var arr =[1,2,3,4];                        1> 获取数组的长度;                            arr.length();//长度为3                        2> 修改数组的长度;                    说明:                        1) 超出了数组的长度,那么多余的项值为undefined;                            arr.length = 4;  // [1,2,3,undefined]                        2) 如果没有超出数组的长度,那么就把数组保留相对应数字的元素个数;                            arr.length = 1;  // [1]

            3.sort()方法:               定义:对一个数组进行排序的,默认排序是从小到大,根据字符串来排序的;               用法:Array.sort();                     例:var arr = [3,5,2,6,7];                         arr.sort();               参数说明:                         sort(function(a,b){});                         sort的参数,必须是一个函数,函数有两个参数;               函数返回值:                   如果为正数,那么随机比较的两个数交换位置;                         如果为负数或者0 不交换位置;               例:var arr = [3,5,2,6,7];                   arr.sort();//不写参数默认从小到大排;

                   arr.sort(function(a,b){                        return a - b;//从小到大排                   });                   arr.sort(function(a,b){                        return b - a;//从大到小排                   });

                   带单位的排序方法:                   var arr =["34px","12px","45px","20px"];                   arr.sort(function(a,b){                        return parseInt(a) - parseInt(b);                   });

            4.push():                定义:向数组末尾追加一个或多个元素;                用法:Array.push()                      例:var arr = [1,2,3];                          arr.push(4); //[1,2,3,4]                注意:会改变原有的数组;                参数:一个或者多个参数;                返回值:追加后数组的长度;

            5.pop():                定义:删除数组最后一个元素;                用法:Array.pop()                      例:var arr =[1,2,3];                          arr.pop(); //[1,2]                注意:会改变原有的数组;                参数:无;                返回值:删除的那个元素;

            6.unshift():                 定义:向数组的最前面添加一个或多个元素;                 用法:Array.unshift()                       例:var arr =[1,2,3];                           arr.unshift(5); //[5,1,2,3]                 注意:会改变原有的数组;                 参数:一个或者多个参数;                 返回值:添加后数组的长度;

            7.shift():                 定义:删除数组第一个元素;                 用法:Array.shift()                       例:var arr =[1,2,3];                           arr.shift(); //[2,3]                 注意:会改变原有的数组;                 参数:无;                 返回值:删除的那个元素;

            8.concat():                 定义:连接多个数组,并生成新数组,不会改变原有的数组;                 参数:要连接的一个或多个数组,还可以传入每一项,作为新数组的每一项;                 concat:string也有这个方法,但是一般会用 + 号连接;                 用法:Array.concat()                       例:var arr = [1,2,3];  var arr1 = [4,5,6];                           var newArr = arr.concat(arr1); //参数里放入要连接的数组;会返回一个连接后的数组;                           //concat()中不传入参数,会复制原有的数组;                           var arr = [2,3,4];                           var newArr =arr.concat();  //这样得到的是复制后的arr数组

            9.indexOf():(IE6,7,8不支持这个方法)                 定义:根据字符找对应的字符索引;                 解决支持底版本的解决办法:(手动封装indexOf()方法)                       function indexOf( arr,str,searIndex ){                            searIndex = searIndex ? (searIndex > 0 ? searIndex : 0)  : 0;                            for( var i = searIndex; i < arr.length; i++ ){                                if( arr[i] === str ){//判断是否存在数组中                                        return i;//找到了返回对应的索引                                }                            }                                return -1;//找不到返回-1                       };

            10.reverse():                 定义:反转数组,将数组中的数据的位置反过来显示;(使数组倒序)                 返回值:该方法会改变原有数组;                 参数:无;                 语法:var arr = [1,2,3,4,5];                       arr.reverse();                       console.log(arr);// [5,4,3,2,1] 改变了原有数组

            11.slice():                 定义:根据输入的值,截取对应要的数组;                 返回值:返回截取后的新数组,不会改变原有数组;                 参数:(start,end)                 语法:var arr = [1,2,3,4,5];                       arr.slice(1);// [2,3,4,5]  从位置1开始截取到最后                       arr.slice(1,2);// [2]  从位置1开始截取到第二位,不包括第二位

            12.splice():                 定义:从指定位置删除部分元素并增加新的元素;                 注意:会改变原有的数组;                 参数:(i,n,e,e1,e2...)                       i:从该下标开始删除;                       n:删除指定数量的元素;                       e:插入的元素;后面可以插入多个元素;              语法:var arr = [1,2,3,4,5];                    arr.splice(1); // [2,3,4,5] 删除从1位置开始;                    arr.splice(1,2); // [4,5]二十八.DOM(Document Object Model)      DOM分为:xmlDOM  htmlDOM;

      定义:文档对象模型;              文档(Document):html页面              文档对象(Document Object):页面中的元素              文档对象模型(Document Object Model):是一套定义;为了能够让程序(js)去操作页面中的元素;      DOM:会把文档看作是一棵树,同时定义了很多方法来操作这棵数中的每一个元素(节点)      作用:DOM制定了一套标准,对页面中的html元素;            进行获取、删除、改变、添加,在js中通过document这个对象提供的方法。

      说明:每一个html标签,都是DOM结构的节点,节点也称之为元素;

      DOM节点:是DOM结构中最基本的组成单元。

      DOM结构:            按层级划分:父节点,子节点,兄弟节点;            父子节点:上下两层的关系;            兄弟节点:同一级的关系;            祖先节点:当前节点上面所有节点的统称;            子孙节点:当前节点下面所有节点的统称;

      DOM节点是有类型的:      DOM按类型划分:元素节点  属性节点  文本节点  注释节点 document节点            元素节点:html标签            文本节点:文字,特殊符号,换行符,制表符。。。(给用户看的)            属性节点:元素节点上各种属性            注释节点:文档中的注释            document节点:特有的document对象;

            1.nodeType:                定义:当前元素的节点类型;(返回的是正整数)                节点类型值:                        元素节点:1                        属性节点:2                        文本节点:3                        注释节点:8                        document节点:9

            2.nodeName:                 定义:获取到当前节点的名字(获取到的名字是大写的);                 元素节点:标签名(大写的)                        文本节点:#text;                        注释节点:#comment;                        document节点:#document;

      通过父节点操作子节点:            3.childNodes:                 定义:是一个只读属性,子节点列表集合;                 兼容问题:                        1> 标准下:包含了文本和元素类型的节点,也会包含非法嵌套的子节点;                        2> 非标准下:只包含元素类型节点,ie7以下不会包含非法嵌套的子节点;                 注意:childNodes只包含一级子节点,不包含后辈孙级以下的节点;                 用法:元素.childNodes;

            4.children:                 定义:只读属性,子节点列表集合;                 兼容问题:                       1> 标准下:只包含元素类型的节点;                       2> 非标准下:只包含元素类型的节点;                 用法:元素.children;

            5.parentNode:                 定义:获取到当前节点的父节点;

            6.获取某个元素下面的子节点;                非标准支持的属性:                     1> firstChild:只读属性 第一个子节点                     用法:元素.firstChild;

                     2> lastChild:只读属性 最后一个子节点                     用法:元素.lastChild;

                     3> nextSibling:只读属性 下一个兄弟节点                     用法:元素.nextSibling;

                     4> previousSibling:只读属性 最后一个兄弟节点                     用法:元素.previousSibling;

                标准下支持的属性:                     1> firstElementChild:只读属性 标准下获取第一个元素类型的子节点;(非标准下没有这个属性)

                     2> lastElementChild:只读属性 标准下获取第一个元素类型的子节点;(非标准下没有这个属性)

                     3> nextElementSibling:只读属性 标准下获取下一个兄弟节点类型的子节点;(非标准下没有这个属性)

                     4> previousElementSibling:只读属性 标准下获取上一个兄弟节点类型的子节点;(非标准下没有这个属性)

            兼容问题:                标准下:只包含文本类型的节点;                非标准下:只包含元素节点;

            兼容处理方法:                1> firstElementChild||firstChild  第一个子节点

                2> lastElementChild||lastChild    最后一个子节点

                3> nextElementSibling||nextSibling 下一个兄弟节点

                4> previousElementSibling||previousSibling 上一个兄弟节点

      通过子节点找到父节点:            1.父节点            parentNode:只读属性 当前节点的父级节点            用法:元素.parentNode

            offsetParen:只读属性 离当前元素最近的一个有定位属性的父节点            用法:元素.offsetParent

            问题:            (1).如果没有定位父级,默认是body;

            (2).ie7以下,如果当前元素没有定位默认是body,如果有定位则是html;

            (3).ie7以下,如果当前元素的某个父级触发了layout,那么offsetParent就会被指向到触发了layout特性的父节点上;

            2.offsetLeft(Top):只读 属性 当前元素到定位父级的距离(偏移值)到当前元素的offsetParent的距离

            如果没有定位父级:               offsetParent -> body               offsetLeft -> html

            如果有定位父级:                ie7下:                      1.如果自己没有定位,那么offsetLeft(Top)是到body的距离;                      2.如果自己有定位,就是到定位父级的距离;                其它浏览器:                      到定位父级的距离;

            3.元素宽高取值                 style.width:样式宽;                 clientWidth:可视区宽(当前元素看的见的宽);                 offsetWidth:占位宽;

      操作元素属性的多种方式:            1. 通过"."点的形式获取元素中的属性;                例:oDiv.id;            2.通过"[]"的形式获取元素中的属性;                例:oDiv["id"];            注意:当遇到获取的属性是以变量方式存放的,要用"[]"的方式,不要用点;                如:var name ="value";                       oDiv.name;有问题,这个会找元素中有没有name这个名字的属性;                       oDiv[name];//正确写法            3:                1) getAttribute(属性名称):方法   获取指定元素的指定属性的值;                    用法:元素.getAttribute();                    如:oDiv.getAttribute('value');

                2) setAttribute(属性名称,属性值);方法  给指定元素的指定属性设置值;                    用法:元素.setAttribute();                    如:oDiv.getAttribute('value','test');

                3) removeAttribute(属性名称):方法  移除指定的元素的指定的属性;                    用法:元素.removeAttribute();                    如:oDiv.removeAttribute("value");

      三种获取属性值的区别:          1.用.和[]的形式无法操作元素的自定义属性,getAttribute()可以操作元素的自定义属性;          2.可以获取元素履实际的值,但是ie7下还是会返回资源的绝对路径;

      元素的操作方法:          1.元素的创建:              createElement(标签名称):创建元素              用法:document.createElement(标签名称);

          2.添加子元素:              appendChild(添加的元素):方法  追加子元素              用法:父级.appendChild(要添加的元素);

          3.插入元素:              insertBefore(新的元素,被插入的元素):方法  在指定的元素前面插入一个新元素              用法:父级.insertBefore(新的元素,被插入的元素);

          兼容问题:              1.在ie下如果第二个参数的节点不存在,会报错;              2.在其它标准浏览器下如果第二个参数的节点不存在,则会以appendChild的形式进行添加;

          兼容处理方法:              if(第一个元素存在){                  使用insertBefore();              }else{//如果不存在                  使用appendChild();              }

          4.删除元素:              removeChild(要删除的元素):方法  删除指定元素;              用法:父级.removeChild(要删除的元素);

          5.元素替换:              replaceChild(新的元素,被插入的元素):替换子节点;              用法:父级.replaceChild(新节点,被替换的节点);

          appendChild、insertBefore、replaceChild:              都可以操作动态创建出来的节点,也可以操作已有节点;              操作已有元素时,是直接把元素从一个位置移动到另一个位置,而不是复制。

      表格的操作:          1.tHead:获取表格头          2.tBodies:获取表格正文          3.tFoot:获取表格尾             1> rows:获取行             2> cells:获取列

      表单的操作:          获取表单中的标签:              1.通过标签中的name属性获取;                  如:oForm.text1;                  直接用表单点上name的值;

              2.onchange:当值发生改变的时候触发;                input标签的text:当光标离开的时候,如果内容有变化就触发;

      input标签的radio/checkbox:          1> 标准下点击的时候只要值变了,那么就会触发;          2> 非标准下焦点离开的时候如果值变了,就会触发;

      事件和方法:          1> onsubmit:事件  当提交表单的时候触发          2> submit():方法  提交表单          3> onreset:事件 当表单重置的时候触发          4> confirm('确定要操作吗?'):弹出询问对话框                返回值是true ,false  点确定是true  取消是false;二十九.BOM(Browser Object Model)       BOM:Browser Object Model  浏览器对象模型;

       BOM--方法:在BOM中大部分方法都是window调用的;           1.open(页面的地址,打开的方式):方法  打开一个新的窗口(页面)                用法: window.open(url,方式);//window可以省略                url地址格式:http://www.baidu.com/;

           参数:               1.如果url为空,则默认打开一个空白页面;               2.如果打开方式为空,默认新窗口方式打开;                 打开方式:                     (1)_blank: 新窗口打开 默认;                     (2)_self:在本页面打开新地址;

           返回值:返回新打开的窗口的window对象

           2.close():方法 关闭窗口                用法:某对象.close(); //某对象是谁,就是谁关闭;

           close()的兼容问题:               1.火狐:默认无法关闭;               2.chrome:默认直接关闭;               3.ie:询问用户是否关闭;

           现象:可以关闭在本窗口中通过js方法打开的新窗口;

       BOM--属性:           1.window.navigator.userAgent:获取当前浏览器信息           作用:可以通过得到的浏览器的版本,判断执行相应浏览器的js代码;

           2.window.location:获取浏览器地址信息;

           3.window.location.href:获取url地址;

           4.window.location.search:获取url?后面的内容;

           5.window.location.hash:获取url#号后面的内容

       BOM--窗口尺寸与大小           1.可视区尺寸:看到见的地方               (1)document.documentElement.clientWidth:获取可视区的宽度;               (2)document.documentElement.clientHeight:获取可视区的高度;

           2.滚动距离               (1)标准浏览器:document.body.scrollTop/scrollLeft;               (2)非标准浏览器:document.documentElement.scrollTop/scrollLeft;

           3.内容高度                document.body.scrollHeight/scrollWidth;

           4.文档高度兼容问题:               (1)ie浏览器,这个方法读取错误:document.documentElement.offsetHeight;               (2)所有浏览器都兼容:document.body.offsetHeight;

       window对象常用事件:           1.onscroll:当滚动条滚动的时候触发;           2.onresize:当窗口大小发生改变的时候触发;三十.事件       事件说明:            当用js获取到一个元素的时候,元素的身上自动就有以on开头的这些属性,这些属性都是与事件有关系的                如:                    onclick                    onmouseover                    onmouseout                    ...                    对应值默认为null       当一个元素触发了某个事件(比如onclick),如果onclick对应的值null,毫无反应;           如果对应的值,为函数,那么当触发事件的时候,就会执行这个函数。           其实不是给元素添加事件的,只是给相对应的事件,添加事件处理函数。

       事件的绑定:           作用:同一个元素在添加多个同一个事件处理函数时,最后添加的事件处理函数会替换掉之前的处理函数,                 从而导致前面的处理函数无效;                 事件绑定就是用来处理这个问题,使得一个元素可以添加多个同一个事件处理函数,处理函数中的代码都会被执行;

           兼容问题:               1> 只是在标准浏览器下用(ie9,10,11):                    addEventListener()                        元素.addEventListener(事件名,事件处理函数,布尔值);                    参数:                         参数一,要绑定的事件名;                         参数二,要绑定的事件函数;                         参数三,是否捕获,true:捕获;false:冒泡;

                    1. 执行顺序,是按照绑定事件处理函数的顺序;                    2. 第一个参数 事件是不加 on的;                    3. this指向的是触发事件的对象;

               2> ie低版本(6,7,8,9,10):                    attachEvent();                        元素.attachEvent(on+事件名,事件处理函数);                    参数:                         参数一,要绑定的事件名;                         参数二,要绑定的事件函数;                         参数三,attachEvent只有冒泡;

                    1. 执行顺序,和绑定事件处理函数的顺序相反;                    2. 事件是需要加on;                    3. this指向的是window;

           this,是在函数调用的时候,才决定了函数里this指向的值;                  在事件处理函数里面,this指向的是触发事件的对象;

       事件绑定的解除:           addEventListener(标准下):                   removeEventListener:解除/移除事件绑定;                   元素.removeEventListener(事件名,事件处理函数,false);

           attachEvent(ie低版本下):                    detachEvent:解除/移除事件绑定;                    元素.detachEvent(on+事件名,事件处理函数);           注意:如果要解除的事件处理函数,一定是有名字的事件处理函数,否则找不到这个函数,就无法解除;

           兼容处理:

           call():一个函数的方法               作用:当函数执行的时候,改变函数里的this的指向;                    当函数调用call的时候,直接就执行了这个函数1           参数:               第一个参数:是函数执行过程中,this指向的那个值;                           如果不给第一个参数,或者写入的null,那么函数里的this指向window;                           如果给了第一个参数,那么函数里面的this就指向这个参数的值;               第二个参数,一次往后推写入的参数,是调用函数时候实际传入的参数;

           apply()与call()的作用一样;           参数:               第一参数同call的第一个参数;               第二参数是一个数组,数组里面的值,就是调用函数时实际传入的参数;

       事件模型的三个阶段:               捕获阶段:从顶层开始触发相对应的事件,直到目标元素;               目标阶段:目标元素上触发;               冒泡阶段:从目标元素向最顶层触发相对应的事件;

       事件对象:           定义:当触发了某个事件的时候,那么系统(浏览器)就会把关于这次事件触发的详细信息存在一个对象中,                 这个对象称之为事件对象;           获取到事件对象                标准浏览器下:                    作为事件处理函数的第一个参数;                ie低版本:                    事件对象作为全局的对象存在,名字为event;                chrome下:                可以作为事件处理函数的第一个参数,也可以在全局的event获取;           兼容处理:                var e = ev || event;                低版本支持的event对象在后;

       事件对象的属性:           1.获取鼠标的位置:               clientX:相对于浏览器左边的距离;                  用法:事件对象.clientX;               clientY:相对于浏览器上边的距离;                  用法:事件对象.clientY;           2.获取事件源元素:target;               用法:事件对象.target;

       事件冒泡:         触发某个元素的某个事件,从当前的元素开始,逐级向上触发,沿途的相对应元素(当前元素的祖先节点)的相对应的事件;

       好处:可以事件委托;             事件源,事件发生的那个元素;             事件源元素的获取:                 标准浏览器:                    事件对象.target;                 在ie低版本:                    事件对象.srcElement;

       阻止冒泡:事件对象.cancelBubble = true;

       焦点事件:           定义:可以获取到光标的事件;                 页面中的元素能跟用户交互的,例如:input输入框、表单控件等,都有焦点事件;

           焦点默认:默认焦点时是,document;

           获取焦点方式:                1. 鼠标点击;                2. 键盘tab键;                3. 程序设置;

           注意:页面中的元素只能有一个元素获取到焦点,当一个元素获取焦点后,另一个元素就会失去焦点;

           1.获取焦点:onfocus:元素 获取 焦点时触发的事件;                 用法:元素.onfocus = function(){                             //操作代码;                       }           2.失去焦点:onblur:元素 失去 焦点时触发的事件;                 用法:元素.onblur = function(){                            //操作代码;                       }           事件方法:select()、focus()、blur();               1.获取焦点:元素.focus();//一般用在,打开页面就有默认获取焦点的元素上               2.失去焦点:元素.blur();//基本不用               3.选中内容:元素.select();//一般用在,有全选功能上

       onchange事件:当select控件的值发生改变的时候触发的事件;只有select有这个事件;

       键盘事件:           定义:敲击键盘触发的事件;                 只能作用在可以获取焦点的元素身上;

           1.onkeydown:键盘按下不抬起触发的事件;                  用法:元素.onkeydown = function(){                             //操作代码                        }           2.onkeyup:键盘抬起触发的事件;                用法:元素.onkeyup = function(){                             //操作代码                      }           3.onkeypress:键盘按下不抬起触发的事件;                   用法:元素.onkeypress = function(){                             //操作代码                         }                   注意:当按下功能键的时候onkeypress不触发的;

       获取键盘按钮的值:           1.keycode:事件对象下的属性;              用法:事件对象.keycode;              返回:一个十进制的数字,这个数字代表的就是当前按下的键;

       获取功能键盘的值:都是事件对象下的属性;           1.ctrlKey:ctrl键的值;           2.shiftKey:shift键的值;           3.altKey:alt键的值;        返回值:都是boolean值,没有按键,返回false;有按键,返回true;

       事件的默认行为:当触发某个事件的时候,浏览器会自动完成某些行为;

           例如:浏览器页面有滚动条时,按空格键会自动翻下一页;                 a标签点击有跳转窗口行为;

           阻止默认行为的方法:                 1> return false(ie7浏览器不兼容);

                 2> FF和chrome下:e.preventDefault;(ie浏览器不支持这个属性)                    ie低版本:e.returnValue = false;                        说明:部分事件不支持returnValue,具体需要测试;

                 3> 主要处理ie7的兼容,chrome不支持这种方法;                     全局捕获:                        元素.setCapture();                        释放捕获:                            元素.releaseCapture();                     注意:全局捕获一般用在有一对事件里面。比如:鼠标抬起和鼠标按下

                 常见的默认行为:                      1.ctrl+鼠标单击链接时,页面会新打开一个浏览器;                      2.图片、链接,都有拖动的行为;                      3.按下空格件滚动条和页面会向下滚动;                      4.默认鼠标滚轴可以上下滚动;

       右击鼠标出现菜单阻止方法:           oncontextmenu:不是右击事件;           当右击菜单出现的时候,触发的事件;           用法:document.oncontextmenu = function(){                       //这里可以阻止后操作的代码                       return false;                 } //这样写就阻止了

       鼠标滚轮事件:           ie和chrome:onmousewheel           FF:DOMMouseScroll;               说明:DOM开头的事件,属于DOM事件;                     DOM事件,必须通过绑定的形式,才有作用,要使用addEventListener进行绑定;

       判断出滚轮滚动的方向:           ie和chrome下:               事件对象.wheelDelta;               返回值:向上120  向下-120;           FF下:               事件对象.detail;               返回值:向上-3  向下3;三十一.AJAX       含义:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)

       ajax作用:利用js发送请求,获取数据,得到数据后,就可以根据数据结合DOM,                 把数据渲染在页面中。就可以利用ajax做到无刷新操作数据。

       ajax工作流程:                          响应状态码           1. 初始化,得到一个ajax对象;             0           2. 建立连接,准备数据;                   1           3. 发送数据;                             2           4. 等待服务器响应(数据没完全发送);       3           5. 服务器响应完成,数据接收完成;         4

       实例:           //1.得到ajax对象           var xhr =new XMLHttpRequest();

           //2.建立连接,准备数据           xhr.open("get","./php/get.php",true);

           //连接完成后做的事           xhr.onreadystatechange = function(){                if( xhr.status === 200 ){                    xhr.responseText;//服务器返回的数据                }else{                    alert( xhr.statusText );//                    alert( xhr.status );                }           }           /*           xhr.onload = function(){                if( xhr.status === 200 ){                    xhr.responseText;//服务器返回的数据                }else{                    alert( xhr.statusText );//状态内容                    alert( xhr.status );//状态码                }           };           */

           //3.xhr.send()进行3,4,5步骤           xhr.send();

       方法说明:           1.XMLHttpRequest():ajax对象             兼容问题:                 1>XMLHttpRequest:支持标准和ie7以上浏览器,ie6不支持;                 2>ActiveXObject("Microsoft.XMLHTTP"):支持ie6;

           2.open(method,url,boolean):建立连接             参数说明:                 第一个参数:发送方式(get或post);                 第二个参数:要发送的地址;                 第三个参数:是否为异步(true-异步,false-同步),默认为异步;

           3.send([data]);发送连接             参数说明:                 1>get提交方式,send()不需要有参数;                 2>post提交方式,需要传入查询的数据,send("user=leo");

           4.onload():是标准浏览下提供的一个时间服务器响应完成触发的事件;

           5.onreadystatechange():当ajax每进行一步都会触发这个事件;             在这个方法下,有readyState()方法;获取ajax每一步响应的状态码;

               onload与onreadystatechange的兼容问题:                   onload:只支持标准浏览器和ie9以上;                   onreadystatechange:标准和ie9以下版本都支持;

           6.post与get提交方式:             1> post:ajax中,post要注意两点;                  1> post要设置"Content-Type"这个请求的类型;再将请求的数据输入到send()方法中;                  2> post发送的数据要放在send方法中;                     例:xhr.setRequestHeader( "Content-Type","application/x-www-form-urlencoded" );                         xhr.send("user=leo");             2> get:ajax中,请求的数据拼到url地址的?后面,用&符号连接;

             get和post的区别:                 get:                    1>发送的数据放在了地址的问号后面;                        http://localhost/2015-08-25/php/get.php?user=leo&password=111111                    2>数据的格式为:                            属性=值                        如果有多个数据                            属性=值&属性=值&属性=值

                    3>由于get请求数据是写在了地址后面,每个浏览器对地址的长度有限制,                         导致了get请求的数据有限,如果超出了浏览器规定的地址的长度,那会会导致get发送的数据不完整

                    4>get请求的数据放在了地址后面,由于浏览器的缓存,浏览器会记录住请求的地址,导致发送的数据就不安全

                 post:                    1>数据不放在地址的后面,通过别的途径发送到服务器的

                    2>发送的数据大小理论上是没有限制的(服务器做了限制)

                    3>post是加密发送,相对安全;

           7.encodeURI(str):把字符转成URL编码;                         例:encodeURI("测试");           8.decodeURI(str):把URL编码转换成字符;                         例:decodeURI("%E5%A6%99%E5%91%B3%E8%AF%BE%E5%A0%82");三十二.JSONP           定义:json and padding;           作用:用来处理跨域的问题;           跨域:是指,只要域名,协议,端口有一个不同就产生了跨域访问;           同源策略:是指,域名,协议,端口相同。               域名:域名就是ip地址的小名(外号);                     如果要域名和ip绑定,需要DNS解析                     域名分为:                        主域名:https://www.baidu.com/                        主域名下分为:(最多就到三级域名)                            二级域名:http://news.baidu.com/                            三级域名:http://29.classcase.sinaapp.com/               协议:不同服务器之间通信的一种约定的协议;                     例如:                         http/https:访问互联网上的页面、ftp、file               端口:例如:http/https  80、ftp  21 22 23,这些都是端口;

           cookie:(document下的一个属性,可读可写)           用法:document.cookie                例:document.cookie = "user=tom;age=30";           cookie说明:               1. cookie是和域名有关系,各个域名下的cookie是互不影响的,不能访问到其他域名下的cookie;

               2. 存的cookie是有过期时间,一般是在浏览器关闭后cookie就清除了;                  如何延长cookie的过期时间:                      可以设置过期时间,保留到未来的事件然后消失要删除cookie,就设置一个过去的时间;                  方法:通过new Date();设置时间,使用cookie中的expires参数来设置过期时间;                        例:var date = new Date();                            var newDate = date.setDate(2);                            document.cookie = "user=tom;expires=newDate";

               3. 存的cookie的条数,根据浏览不同存储的 数量也不同;

           localStorage:(用法:类似cookie)               localStorage下面的方法:                    1>setItem(key,value):设置localStorage项

                    2>getItem(key):通过key值获取value

                    3>removeItem(key):删除localStorage项

                    4>clear():清空掉所有的localStorage项

                    5>storage事件:                        不会触发本窗口监听的storage事件

三十三.正则表达示           定义:规则表达式,描述一套规则的工具;           用法:对字符串进行查找、匹配;           创建正则的方法:               1>var re = new RegExp();//new对象的写法               2>var re = /d/;//字面量的写法

           修饰符i和g的说明:(都写在最后一个/的后面)                i:忽略大小写;    例:var re =/A/i;                g:全局搜索;(匹配到所有符合表达式的字符,默认为非全局搜索,只搜索一次;)                   例:var re =/d/g;

           正则的相关方法:               1>test():检测字符串是否匹配正则中的内容 如果匹配有,返回true;否则返回false;                 用法:var re = new RegExp();                       var str ="abcd";                       re.test(str);                 参数:传一个参数,传要验证的字符串;               2>search():检测字符串首次出现的位置;                 用法:字符串1.search(字符串2 || 正则):                       从字符串1中搜索字符串2或正则的内容,在字符串1中首次出现的位置                 参数:参数可以改字符串,或者是正则表达式;

                 与indexOf的区别:                    1)indexOf:只能传入字符串;                    2)search:既可以传入字符串也可以穿入正则;

               3>match():检测字符串匹配的内容,匹配到内容,就以数组返回,否则返回null;                 用法:字符串1.match( 字符串2 || 正则 ):                           从字符串1查询字符串2或正则匹配的内容,                 返回值:如果有,把结果已数组的形式返回;如果没有,返回的是null;

               4>replace():替换相应的字符串;                 用法:字符串1.replace(字符串2 || 正则,字符串3 || 函数):                        从字符串1中匹配到字符串2或者正则中的内容,替换成字符串3或函数的返回值;                 返回值:替换后新字符串;

                 replace()第二个参数是函数参数时的说明:                    1)这个函数的第一个参数是整个正则表达式匹配的内容;                    2)从第二个参数开始,就是这个正则表达式中子表达式所匹配到的内容;                 作用:限制范围或提权

                    例:var str="sdfsssddffss";                       var str2 = str.replace(/(s)(f)/,function($0,$1,$2,$3...$n){                       });                    $0:返回的是匹配到的字符;                        如:/s/  匹配到的字符串s;                    $1-$n:返回的是每一个分组匹配到的字符;                        如:/(s)(f)/  $1代表的是(s)匹配到的,$2代表的是(f)匹配到的;$3--$n依次类推;

           转义字符:               +:普通的字符组合,代表一个或一段特殊的内容               :换行符               :回车符               :制表符

           量词:                 {n}:重复n次()               {n,m}:最少重复n次 最多m次                {n,}:最少n次,最多不限                   +:最少重复1次,最多不限 {1,}                   ?:最少0次,最多1次 {0,1}  /d?/                   *:最少0次 最多不限 {0,}

           匹配中文:               escape():根据编码转换成中文;                     例:console.log(escape("u4E00"));               unescape("中国"):根据中文转换成编码;                     例:console.log(unescape("中国"));

           特殊含义字符:                d: 0-9数字                D: 非数字

                w: 数字 字母 下划线                W:非数字 字母 下划线

                s:匹配一个空格                S: 非空格

                : 边界符   一个字符的左边或右边是非w就存在一个边界符                B:非边界符

                1: 重复第一个子项中的内容   2345

三十四.面向对象           类:对一类具有相同的特征的抽象化描述(ECMAscript5没有类,ECMAscript6有类);           对象:类的实例化;           实例化对象的方法:通过关键字new,来实例化一个对象;                         例:var person = new Person();//这就完成了对象的实例化

           构造函数:               定义:由于js中是没有类的概念,如果要自定义一种数据类型                     借助于函数定义相关的类型,这个函数称之为 构造函数;               创建方法:                     例:function Person(userName age){//构造函数名都约定是首字母大写                            this.userName = userName;                            this.age = age;                            this.city="SH";                         }

               使用构造函数:(通过实例化方式)                     var person = new Person("张三",34);                     console.log(person.userName);//张三                     console.log(person.age);//34

               实例化构造函数的过程:                   1. 当用new 调用某个函数的时候,在这个函数里面会隐式的创建一个新的对象;                   2. 把函数中的this指向创建出来的新对象;                   3. 隐式的return 出这个新创建的对象;

               在函数中使用return:                   return 后面是简单类型的值,new 函数之后得到的是内部隐式创建的那个对象;                   return 后面是对象,new 函数之后的到的就是return后面的对象;

               对象原型(prototype):                   定义:只要定义一个函数,那这个函数身上就自动有一个prototype这个属性,这个属性对象的值为Obejct类型;

                   说明:prototype对应的对象不是一个空的对象,有一个属性constructor,constructor对应的值就是构造函数;

                   __proto__属性:                       定义:对象上的一个属性,__proto__对应值,为创建这个对象的构造函数的原型;

               访问对象上的属性或方法的过程:                   首先当前对象自己身上找这个属性或方法,如果没有找到,                   那么再去当前这个对象下的__proto__指向的原型对象去找属性或方法。

 三十五. in 运算符

    in 是一个运算符,也是一个二元运算符,对运算符左右两个操作数的要求比较严格。     in运算符要求第1个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象。     只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false。 例:var isIE = "ActiveXObject" in window; 1.判断对象是否为数组/对象的元素/属性: 格式:(变量 in 对象)......注意,,,

  当“对象”为数组时,“变量”指的是数组的“索引”;

  当“对象”为对象是,“变量”指的是对象的“属性”。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有