JavaScript(一)

一、JavaScript基础

1.     JavaScript组成

ECMAScript 解释器、翻译 几乎完全兼容

DOM:Document Object Model文档对象模型 有兼容性问题

BOM:Browser Object Model 浏览器对象模型 几乎完全不兼容

2.     变量类型

typeof运算符

typeof x;

number string boolean undefined object function

数据类型转换:显式类型转换(强制类型转换) 隐式类型转换

parseInt() parseFloat()

3.     闭包

子函数可以使用父函数中的局部变量

4.     命名规范

匈牙利命名法 类型前缀 首字母大写

5.     函数返回值

函数可以没有return或者return;

一个函数应该只返回一种类型的值

6.     函数传参

arguments数组是函数的参数数组

7.     取非行间样式 兼容

if(obj.currentStyle){

        console.log(obj.currentStyle[attr]);

}

else{

        console.log(getComputedStyle(obj,false)[attr]);

}

8.     数组

添加

push(元素)从尾部添加 unshift(元素)从头部添加

删除

pop()从尾部弹出

shift()从头部弹出

排序

sort(比较函数) 返回值大于0会改变2数顺序

//从小到大

arr.sort(function(num1,num2){

return num1-num2;

})

 

转换

concat(数组2)连接2个数组

join(分隔符)将数组转换为字符串

split(分隔符)将字符串转换为数组

splice 插入 删除 替换

splice(开始位置,要删除的长度) 删除

splice(开始位置,0,要插入的元素…) 插入

splice(开始位置,要删除的长度,要插入的元素…) 替换

9.     input文本框为只读不可编辑的方法

方法1:onfocus=this.blur() 当鼠标放上就离开焦点

<input type="text" name="input1" value="中国" onfocus=this.blur()>   

方法2:readonly

<input type="text" name="input1" value="中国" readonly>   

<input type="text" name="input1" value="中国" readonly="true"> 

方法3:disabled 文字会变成灰色

<input type="text" name="input1" value="中国" disabled="true">

10.   eval(string) 计算其中的字符串,并执行其中的js代码

11.   input文本框中的内容从右到左

方法1:text-align:right

<input style="text-align:right" />

方法2:dir=”rtl”

<input type="text" dir="rtl" />

12.   截取字符串

string.slice(start,end)

string.substring(start,stop)

stringObject.substr(start [, length ])

13.   字符串的替换

var str = 'abcadeacf';

var str1 = str.replace('a', 'o');//只替换第一个

alert(str1); 

 

// 打印结果: obcadeacf

 

var str2 = str.replace(/a/g, 'o');//替换所有

alert(str2); 

 

//打印结果: obcodeocf,

二、DOM

1.     DOM节点

nodeType 节点类型 元素1 属性2 文本3

childNodes子节点 children是children的兼容版

parentNode 父节点

offsetParent 最近的显示指定位置的元素 position是absolute的offsetParent是最近的父的relative的元素

firstChild/firstElementChild 首子节点 有兼容性问题 火狐

lastChild/lastElementChild 尾子节点 有兼容性问题

nextSibling/nextElementSibling 兄弟节点

previousSibling/previousElementSibling 有兼容性问题

 

childNodes和nodeType结合 //火狐中空白地方也当作文本节点

if(nodex.childNodes[i].nodeTypw==1){…}

2.     元素属性操作

第一种:oDiv.style.display=’block’;

第二种:oDiv.style[‘display’]=’block’;

第三种:

               getAttribute(名称)获取

               setAttribute(名称,值)设置

               removeAttribute(名称)删除

3.     用className获取元素

function getByClass(oParent, sClass)

{

  var aEle=oParent.getElementsByTagName('*');

  var aResult=[];

  var i=0;

  

  for(i=0;i<aEle.length;i++)

  {

    if(aEle[i].className==sClass)

    {

      aResult.push(aEle[i]);

    }

  }

  

  return aResult;

}

 

4.     创建和插入节点

var oLi=document.createElement('li');//创建

oLi.innerHTML=oTxt.value;

//父.appendChild(newNode);

oUl.appendChild(oLi);//插入

//父.insertBefore(newNode,某子节点)

oUl.insertBefore(oLi,aLi[0]);//在某节点前插入

如果原来没有子节点,不能insertBefore  可以判断一下有没有子节点

       如果父元素没有子节点则appendChild(),否则insertBefore()

5.     文档碎片

理论上可以提高dom的性能,实际上并不能 只有面试可能会问

window.onload=function(){

      var iStart=new Date().getTime();

      var oBtn=document.getElementById('btn1');

      var oUl=document.getElementById('ul1');     

      var oFrag=document.createDocumentFragment();

      var i=0;

      for(i=0;i<i<10000;i++){

        var oLi=document.createElement('li');

        oFrag.appendChild(oLi);

      }

      oUl.appendChild(oFrag);

      console.log(new Date().getTime()-iStart);

    }

 

三、BOM

1.     打开网页

window.open('http://www.baidu.com/','_blank');

第二个参数可选,_blank在一个新窗口打开,_self在当前窗口打开

window.open('about:blank');//空白页

window.open()返回值是新打开的页面

2.     document.write(‘…’)

在网页上写

如果是在文档加载完后执行,会清空页面

3.     关闭网页

 window.close();

chrom可以直接关闭

ie提示是否关闭

火狐不允许关闭 只能要关闭open出来的网页

4.     userAgent

alert(window.navigator.userAgent);

当前浏览器的版本

5.     location

alert(window.location);//显示当前路径

 window.location='http://www.baidu.com/';//打开这个网页

 

6.     尺寸及坐标

可视区尺寸

document.documentElement.clientWidth

document.documentElement.clientHeight

滚动距离

document.body.scrollTop

document.documentElement.scrollTop

 距可视区顶部的距离oEvent.clientY

7.     系统对话框

 alert(‘…’);//警告框 只能确定

confirm(‘…’);//选择框 有确定和取消2个选项 返回用户的选项true/false

prompt(‘…’,’…’);//输入框 第一个参数是问题,第二个参数是默认值 返回输入的内容 没有内容返回null

8.     window对象的常用事件

onload

onscroll//当页面滚动时

onresize

9.     document的本质是最外面的一层标签

document.childNodes[0].tagName=html

10.   获取event对象

var oEvent=ev||event;//为了兼容性

11.   取消冒泡

oEvent.cancelBubble=true;

12.   键盘按键

onkeydown 按键按下

onkeyup 按键抬起

onpress=onkeydown+onkeyup

onclick=onmousedown+onmouseup

13.   keycode 键值

document.onkeydown=function(ev){

      var oEvent=ev||event;

      alert(oEvent.keyCode);

    }

 

14.   解决卡顿问题

设置定时器

上下左右设置为布尔变量

onkeydown设置某方向为true if或switch

onkeyup设置所有方向为false

15.   ctrlKey shiftKey altKey

按着ctrl时 ctrlKey为true

16.   右键菜单

 document.oncontextmenu=function()

{

}

当点击右键时,

有返回值 return false;可以阻止弹出右键的菜单

17.   浏览器自带的行为都能用return false屏蔽

右键菜单

form提交

按键输入input

18.   拖拽

按下的点与div的左上角距离不变

onmousedown 存储距离

onmousemove 根据距离计算div最新的位置

onmouseup

四、

posted @ 2018-01-31 21:21  张若昀的小迷妹  阅读(196)  评论(0编辑  收藏  举报