JavaScript入门基础

 

1、数组html

         一、数组是一个能够存储一组或一系列相关数据的容器node

         二、数组元素:是指存储在数组中并赋予惟一索引(下标)的数据段数组元素的数据类型能够不一样windows

         三、做用:解决大量相关数据的存储和使用问题跨域

         四、定义数组数组

                   (1)字面量的方式(JSON)浏览器

                            [数据,数据...]或{"key":"value","key":"value",...}缓存

                   (2)建立对象的方式(构造函数)服务器

                            var arr = new Array();cookie

                            var arr1 = new Array(5);      数组长度为5app

                            var arr2 = [5];                                数组元素5,长度1

                            var arr3 = new Array("-5");  长度为1,去掉引号会出错

                            有且只有一个正整数做为参数时,表示数组长度,若是是负数,则会出错

         五、数组的方法(增删改截拼复排转)

                   (1)增

                                     i.前增

                                               方法:unshift(增长的内容)

                                               做用:在数组首部增长元素

                                               返回值:增长后数组的长度

                                               影响原数组

                                                        若是增长的是另一个数组,会将增长的数组当作一个元素添加到指定数组中

                                     ii.后增

                                               方法:push(增长的内容)

                                               做用:在数组尾部增长元素

                                               返回值:增长后数组的长度

                                               影响原数组

                   (2)删

                   i.前删

                   方法:shift()

                   做用:删除数组首部的元素(一次只能删除一个)

                   返回值:被删除的元素

                   影响原数组

                   ii.后删

                   方法:pop()

                   做用:删除数组尾部的元素(一次只能删除一个)

                   返回值:被删除的元素

                   影响原数组

                   (3)改

                   方法:splice(开始下标,删除的长度,新增元素...)

                   做用:在数组任意位置进行增、删、改元素

                   返回值:被删除的元素

                   影响原数组

                   (4)截

                   方法:slice(开始下标,结束下标)

                   做用:截取指定范围的元素(包含开始位置的元素,不包括结束位置的元素)

                   返回值:被截取到的元素

                   不影响原数组

                   参数支持负数,但不支持第一个参数>第二个参数

                   (5)拼

                   方法:concat(拼接的内容)

                   做用:将参数拼接到指定数组后面,并产生一个新数组

                   将一个数组拼接到指定数组后,会将该数组中的每个元素单独拼接到指定数组后

                   返回值:拼接后的新数组

                   不影响原数组

                   (6)复

                   复制数组:

                   i.slice(0);

                   ii.concat(0);

                   iii.遍历数组

                   (7)排

                   i.       方法:reverse();

                   做用:将数组元素逆序

                   返回值:逆序后的数组

                   影响原数组

         ii.      方法:sort();

                   做用:按编码排序(默认数组中全部的元素按照字符串的形式排序)

                   返回值:排序后的数组

                   影响原数组

                   sort(function(a,b){return a-b;})(从小到大按Number类型排序)

                   sort(function(a,b){return b-a;})(从大到小按Number类型排序)

                   (8)转

                   i.       方法:toString();

                   做用:将数组转换为字符串,转换后字符以逗号隔开

                   返回值:转换后的字符串

                   不影响原数组

                   若是是一个变量,调用toString()方法,参数是几,则将变量转换成几进制的字符串

                   ii.      方法:join(指定分隔符)

                   做用:将数组转为带有指定分隔符的字符串

                   返回值:转换后的字符串

                   不影响原数组

         六、数组遍历

                   for in循环(做用:遍历数组和对象)

                   for(变量 in 集合){

                   语句组;

                            }

         七、冒泡排序

                   从小到大(从上往下:相邻元素比较)

                   4 2 3 5 1

                   2 3 4 1 5

                   2 3 1 4

                   2 1 3

                   1 2

                   var arr = [4,2,3,5,1];

                   for(var i = 0;i<arr.length-1;i++){

                            for(var j = 0;j<arr.length-i;j++){

                                     if(arr[j]>arr[j+1]){

                                               var t = arr[j];

                                               arr[j] = arr[j+1]

                                               arr[j+1] = t;

                                     }

                            }

                   }

         八、选择排序(拿一个元素与它后面的元素比较)

                   从小到大

                   4 2 3 5 1

                   2 3 4 1 5

                   2 3 1 4

                   2 1 3

                   1 2

                  for(var i =0;i<arr.length-1;i++){

                            for(var j = i+1;j<arr.length;j++){

                                     if(arr[i]>arr[j]){

                                               var t = arr[i];

                                               arr[i] = arr[j];

                                               arr[j] = t;

                                     }

                            }

                   }

        

         十、栈:存放简单数据和指向堆地址,每个栈只能存放一个数据

                   堆:堆的地址是存入栈中的,堆中能够存放复杂数据类型,多个数据

 

 

1、ES5

         一、严格模式 "use strict"

                   严格模式下,函数做用域中局部变量不会变量提高

                   建议在函数做用于内部使用,且放在函数开头部分

         二、ES5新增的数组方法

                   (1)indexOf:查找指定元素在数组中首次出现的下标位置,若是没有找到,返回-1

                                     indexOf(查找的元素,start)

                   (2)forEach(function(value,index,array){})

                                     做用:遍历数组

                                     value:表示数组中的每个元素

                                     index:表示数组的下标

                                     array:表示数组自己

                   (3)map:遍历数组,并返回结果

                   (4)reduce:归并

                                     reduce(function(pre,next,index,array){})

                                               pre:表示前一个元素

                                               next:表示下一个元素

                                               index:表示下标

                                               array:表示数组自己

                                               将pre与next运算的结果再次赋值给pre

                   (5)fiter过滤

                                     做用:经过遍历数组,设置过滤事件,返回过滤后的结果

2、字符串

         一、声明字符串

                   (1)字面量方式:var str = "hello"

                   (2)构造函数的方式:var str = new String("hello")

         二、字符串的属性:length:表示字符串的长度

         三、字符串的方法(查、替、截、转)

                   (1)查

                            i.       charAt(下标):返回指定下标位置的元素

                            ii.      indexOf(查找的字符,start)

                            iii.     lastIndexOf(查找的字符,start):返回一个元素最后出现的位置

                            iV.              charCodeAt(下标):返回指定下标位置字符的编码值

                   (2)替

                                      replace(被替换的内容,替换的内容)一次只能替换一个

                   (3)截

                            i.       substring(start,end) 参数位置大小随意,但不支持负数

                            ii.      substr(start,length)从指定位置开始截取固定长度的字符串

                            iii.     slice(start,end)参数大小不容许互换,参数支持负数

                   (4)转

                            i.       split(切割符,切割长度):将字符串转为数组

                            ii.      toUpperCase():将小写字母转为大写字母

                            iii.     toLowerCase():将大写字母转为小写

         四、ASCII码

                   (1)汉字范围

                                     4E00(19968)

                                     9FA5(40869)

                                     共20902个

                   (2)charCodeAt():根据下表获取指定元素的编码值

                             String.fromCharCode():根据编码值返回字符

                             大写字母65~90

                             小写字母97~122

 

1、Math

         属性:Math.PI

         方法:

         一、Math.abs():求绝对值

         二、求近似值

                   (1)Math.round():四舍五入(若是是负数,>.5进1,<=.5舍去)

                   (2)Math.floor():向上取整

                   (3)Math.ceil():向下取整

         三、求最值

                   (1)Math.max():求最大值(不支持传递一个数组做为参数)

                   (2)Math.min():求最小值

         四、随机数

                   Math.random():表示0~1之间的随机数[0,1)

                   Math.floor(Math.random() * (n+1));   0~n的整数

                   Math.floor(Math.random() * (max-min+1)+min)

                   取从min到max之间的随机整数

         五、Math.pow(m,n)  m的n次方

         六、Math.sqrt(n):求平方根

         七、日期对象Date

                   建立日期对象

                            var date = new Date();

                   方法:

                   (1)getFullYear():获取年份

                            getYear():获取年份,两千年以前,只显示年份的后两位

                   (2)getMonth():获取月份(月份从0~11表示1月至12月)

                   (3)getDate():获取日期

                   (4)getDay():获取星期

                   (5)getHour():获取小时

                   (6)getMinutes():获取分钟

                   (7)getSeconds():获取秒

                   (8)getMillseconds():获取毫秒

                   (9)getTime();获取时间戳

                                     时间戳:从1970年1月1日0时整到如今的毫秒数

                   扩展:

                   (1)setFullYear():设置年份

                   (2)setMonth():设置月份

                   (3)setDate():设置日

                   (4)setHours():设置小时

                   (5)setMinutes():设置分钟

                   (6)setSeconds():设置秒

                   (7)setMillseconds():设置毫秒

                   toLocaleString():显示本地日期格式的字符串                  2017/9/8 下午9:02:56

                   toLocaleDateString():显示本地日期                2017/9/8

                   toLocaleTimeString():显示本地时间              下午9:02:56

 

1、BOM

         一、BOM(Browser object model) 浏览器对象模型

                   BOM提供了独立于内容而与浏览器窗口进行交互的对象

                   BOM主要用于管理窗口与窗口之间的通信,核心对象是window

         二、window子对象

                   document/frames/history/loction/navigator/screen

         三、window的内置对象(location/history/navigator)

                   (1)location对象

                            i.       window.location = "http://www.baidu.com";

                                               location对象包含有关当前URL(统一资源定位符)的信息,是window对象的一部分,可经过window.location属性来访问

                                               href属性:是一个可读可写的字符串,可设置或返回当前显示的文档的完整URL

                                                        location.href = "http://www.baidu.com"

                            ii.      方法:

                                     reload():用于从新加载当前文档(刷新)

                                     语法:location.reload();

                                               location.reload(true);:刷新页面,不使用缓存

                   (2)history对象

                            i.                 history.back():载入历史列表中的前一个网址,至关于按下“后退”

                            ii.                history.forward():载入后一个网址,至关于“前进”

                            iii.     history.go():打开历史列表中的一个网址,括号里有正数负数

                                               history.go(0):刷新页面

                   (3)navigator对象

                                     navigator.userAgent:用户代理信息。经过该属性能够获取浏览器及操做系统信息

         四、定时器

                   (1)setInterval(函数或表达式,毫秒数)   间歇性计时器

                            clearInterval():清除间歇性计时器

                   (2)setTimeout(函数或表达式,毫秒数)            一次性定时器

                            做用:在指定毫秒数后调用函数或执行表达式

                            clearTimeout():清除一次性计时器

         五、window.onscroll事件

                   兼容:var scrollTop = document.documentElement.scrollTop || document.body.scrollTop

2、DOM

         一、DOM(Document Object Mode)文档对象模型

                   做用:经过JavaScript操做DOM,能够重构整个HTML文档,改变页面上的项目

         二、DOM的基本操做(查询,修改,建立,删除)

                   (1)查询

                            getElementById("id名"):获取指定ID元素的节点,找不到返回null

                            getElementsByTagName("标签名"):伪数组

                            getElementsByName("name名"):获取相同名称的节点列表:伪数组

                            getElementsByClassName("class名"):获取相同class属性的节点列表(IE9如下不兼容)

                            document.documentElement:获取html的方法

                            document.body:获取body

                            querySelector("选择器"):(IE8如下不兼容)

                            querySelectorAll(“选择器”):经过选择器获取一组元素,返回一个集合

                   (2)建立

                            creatElement("标签名"):建立一个元素节点

                            createTextNode("文本内容"):建立一个文本节点

                   (3)追加/插入节点

                            父对象.appendChild("节点"):向指定父元素的子节点列表末尾追加新的节点

                            父对象.insertBefore("插入的节点","指定的子节点"):将节点添加到父对象中的指定子节点前面

                   (4)修改

                            父节点.replace(newNode,oldNode):用新节点替换某个子节点

                   (5)删除

                            父节点.removeChild("子节点")

                   (6)克隆

                            节点.cloneNode():克隆节点,复制节点(只克隆节点,不克隆内容)

         三、DOM元素类型

                   节点属性

                                               元素                    属性                    文本

                   nodeName                   元素名称    属性名称    #text

                   nodeType             1              2                3

                   nodeValue          null             属性值                 文本内容(纯文本)

事件捕获和事件冒泡的区别?

(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。

就是由子节点向父节点依次传递事件的过程。

 

(2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,而后到最精确(也能够在窗口级别捕获事件,不过必须由开发人员特别指定)。

和冒泡相反的过程,由父元素向子元素依次传递事件的过程。

 

 

什么叫会话跟踪技术,并说明cookie的特色?

在一次会话从开始到结束的整个过程,全程跟踪记录客户端的状态叫作会话跟踪。就是跟踪一个会话,并保留会话。正常状况下,当客户端向服务器端发送请求并获得服务器端响应后,此次会话关闭,客户端不会把请求获得的信息存储,那么下次再须要相同信息时,还要向服务器端再次请求,这样很浪费时间,因此须要会话跟踪技术,将请求到的信息保存到客户端本地,以便下次使用。这就是会话跟踪技术。

会话跟踪技术就是cookie

特色::

(一)   只能使用文本文件

(二)   文件有大小限制(4KB)

(三)   数量限制。通常浏览器,限制大概在50条左右

(四)   读取有域名限制。不可跨域读取,只能由来自写入cookie的同一域名的网页可进行读取。

(五)   时效限制:每一个cookie都有时效,最短的有效期是,会话级别:就是当浏览器关闭,那么cookie当即销毁

 

一、设置或修改标签中的属性

         对象.属性 访问标签中支持的全部属性

         class属性:对象.className        class是保留字

二、自定义属性

         (1)getAttribute("属性名")获取属性值

         (2)getAttribute("属性名","属性值")设置或修改属性值

         (3)class兼容

                   对象.getAttribute("class") == null ? 对象.getAttribute("className") : 对象.getAttribute("class")

         (4)removeAttribute("属性名"):删除属性

三、    outHTML:获取指定标签及标签的左右内容

         innerText:获取或修改指定标签中的文本内容(纯文本)

         innerHTML:获取或修改制定标签中的文本内容(超文本)(解析标签)

四、childNodes属性:获取到指定节点中的全部子节点(伪数组)返回元素节点和文本节点,

六、children:获取制定对象中的全部元素节点(伪数组)忽略空白节点

         attributes:获取属性节点

七、高级选取

         层次节点结构:父节点与子节点、兄弟节点

         (1)firstChild:获取当前元素节点下的第一个子节点,至关于childNodes[0]

                            不会忽略空白文本节点

         (2)lastChild:获取当前元素节点的最后一个子节点

         (3)parentNode:返回该节点的父节点

         (4)previousSibling:返回该节点的前一个同级节点(兄弟节点),若是没有,返回           null

         (5)nextSibling:返回该节点的后一个同级元素

 

九、obj.offsetWidth:自身的宽度,单位像素

十、obj.offsetLeft:距离左方或上层对象的位置,单位像素

 

一、事件对象:当一个对象触发了所绑定的事件,所发生的一切详细信息都将保存在一个临时 的地方,这个地方叫作事件对象

二、获取时间对象

         兼容:

                   (1)IE及谷歌早期版本:利用内置的全局对象获取 window.event

                   (2)标准:经过给时间触发函数传递的第一个参数

                            var e = e || window.event

三、event.button属性

         (1)标准:鼠标左键                              0

                               鼠标中键(滚轮)            1

                               鼠标右键                                    2

         (2)IE早期版本

                                     左键           1

                                     右键           2

                                     滚轮           4

        

四、事件对象的属性

         (1)clientX/clientY

                   鼠标在页面上相对于浏览器可视区的位置;

         (2)offsetX/oddsetY

                   鼠标点击位置相对于点击(鼠标所在对象区域)的坐标位置

         (3)pageX/pageY

                   鼠标在页面上的位置

         (4)document.documentElement.clientWidth:可视宽度

         (5)screenX/screenY

                   鼠标点击位置到windows屏幕窗口的位置

五、键盘事件

         (1)keyup/keydown :获取到整个键盘的编码值(字母返回大写的编码值)

         (2)keypress:只能获取到键盘中字符的编码值,且火狐只能获取编码0,其余浏览器能够获取到字母的大小写编码

         属性:

                   兼容:var k = evt.keyCode || evt.charCode || evt.which

六、快捷键,组合键

         ctrlKey/shiftKey/altKey

七、事件捕获:(IE和Opera浏览器中,不支持捕获)

                   由祖先节点向子节点层层传递,传递到最底层的子节点,这个过程,称为事件捕获

   事件冒泡:由子节点向父节点,一直到祖先节点传递事件,这个过程称为事件冒泡

八、阻止事件冒泡

         (1)标准:Event.stopPropagatior();

         (2)IE:Event.cancelBubble = true;

         兼容:Event.stopPropagatior() ? Event.stopPropagatior() : Event.cancelBubble=true;

day12

1、浏览器默认行为

         一、右键菜单        oncontextmenu

         二、超连接

         三、拖拽      ondragstart       

2、阻止浏览器默认行为

         一、超连接

                   兼容:

                   evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;

         二、右键菜单:return false;

         三、拖拽:return false;

3、事件监听

         添加事件监听:

                   (1)标准           对象.addEventListener("事件名click",执行函数,布尔值)

                            true:表示捕获

                            false:表示冒泡(默认值)

                   (2)IE     对象.attachEvent("事件驱动onclick",执行函数)

                   兼容:

                   function listener(obj.evt,evtname,fn,boo){

                            obj.addEventLister ? obj.addEventListener(evt,fn,boo):obj.attachEvent(eventname,fn);

                   }

         移除事件监听:

                   (1)标准           对象.removeEventListener("事件名",移除函数,false);

                   (2)IE     detachEvent("事件驱动",移除事件函数)

                   兼容:

                   function removelistener(obj.evt,evtname,fn,boo){

                            obj.removeEventListener ? obj.removeEventListener(evt,fn,boo):obj.detachEvent(eventname,fn);

                   }

4、事件源

         (1)标准:event.target

         (2)IE:event.srcElement

         兼容:

                   var target = event.target || event.srcElement

5、JSON

         一、JSON是一种基于文本的数据交换方式,或者叫作数据描述格式

         二、JSON的优势

                   (1)基于纯文本,跨平台传递极其简单

                   (2)JS原生支持,后台语言几乎所有支持

                   (3)轻量级数据格式,占用字符数量极少,特别适合互联网传递

                   (4)可读性较强

                   (5)容易编写和解读

6、构造函数

         一、使用JS语法

                   function person(name,sex){

                            this.name=name;

                            this.sex = sex;

                   }

                   var p = new person("张三","男")

                   alert(p.name);

         二、使用JSON语法建立对象

                   var obj = {"name:":"张三","sex:":"男"};

                   alert(obj.name);

 

兼容总结

             

1、 className兼容

 

function byClassName (className){

         if(document.getElementsByClassName){

                   return document.getElementsByClassName(className);

         }else{

                   var arr = [];

                   var ele = document.getElementsByTanName("*");

                   for(var i = 0; i < ele.length; i++){

                            if(ele[i].className == className){

                                     arr.push(ele[i]);

                            }

                   }

                   return arr;

         }

}

 

2、 滚动高度兼容

         document.documentElement.scrollTop ? document.documentElement.scrollTop :document.body.scrollTop;

 

3、 滚动宽度兼容

         document.documentElement.scrollLeft ? document.documentElement.scrollLeft :document.body.scrollLeft;

 

4、 class的兼容

         function getAttr (obj){

                   return obj.getAttribute("class") == null ? obj.getAttribute("className") : obj.getAttribute("class");

         }

 

6、获取事件Event兼容

         var oBtn = document.getElemenetById("btn");

         oBtn.onclick = function(event){

                   event = event || window.event;

         }

 

 

8、onkeypress的兼容

         document.onkeypress = function (e){

                   var e = e || window.event;

                   var code = e.keyCode || e.which || e.charCode;

                            alert(code);

         }

 

9、阻止事件冒泡

         function stop (e){

                   var e = e || window.event;

                   return e.stopPropagtion ? e.stopPropagtion() : e.cancelBubble = true;

         }

 

10、阻止超连接的默认行为

         oA.onclick = function (e){

                   var e = e || window.event;

                   e.preventDefault ? e.preventDefault() : e.returnValue = false;

         }

十3、右键默认行为

         document.oncontextmenu = function (e){

                   e = e || window.event;

                   return false;

         }

 

十4、事件源委托兼容

         var oUl = document.getElementById("ul");

         oUl.onclick = function (evt){

                   evt = evt || window.event;

                   var target = evt.target || evt.srcElement;

                   alert(target.innerText);

         }

 

十5、拖拽图片的默认行为

         document.ondragstart = function(){

                   return false;

         }

相关文章
相关标签/搜索