写给自己的js知识点小结

2、获取元素   

  document.getElmentById('id');  只能在document下获取

  obj.getElementsByTagName();

  obj.getElementsByClassName();

  obj.children

    var aLi=oUl.children     //获取所有子级


3、判断
/流程控制语句

A:

  if(){}
  if(){}else{}
  if(){}else if(){}
  if(){}else if(){}else{}

B:

  switch(变量){
    case '条件':
      语句
      break;   //跳出

    default: 默认
      break;
    }

C:

  true&&语句;

4、循环

  初始化  条件  语句  自增

  

  while(){} 不确定次数的循环

  for(){} 有固定次数的循环  性能高

  for in :

      for( 变量 in 对象)  {代码};用于遍历数组或对象的属性

      可以循环json和数组(arr),所以性能低


5、数据类型

  检测数据类型:typeof

  
  1)基本类型

    string 字符串

    number 数字  ( NaN属于number类型,非数字(只是一个标识)。特点:自己不等于自己 )

            alert(isNaN(oT.value)); //判断是不是NaN

    boolean 布尔值

    undefined 未定义

    

  2)复合类型
    object 对象( Object本质上是由一组无序的名值对组成的,如object、array、data等 )

      alert(typeof null);//object      空对象也是对象

  3)function 函数

     附tips:数组的两种写法:

      var arr=[1,2,3,4];
      var Array(1,2,3,4);

 

6、显式数据类型转换/强制类型转换

为什么要转换

    比如一些数字,可能被识别成字符串,转成数字方便使用


  parseInt 整数(舍弃小数 和数字后面的非数字部分)

1 var a='aa12abc';        //NaN     非数字
2 var a='12abc';
3 alert(parseInt(a));
点击查看例子
 1 <script>
 2 window.onload=function (){
 3     var oTxt1=document.getElementById('txt1');
 4     var oTxt2=document.getElementById('txt2');
 5     var oBtn=document.getElementById('btn');
 6     
 7     oBtn.onclick=function (){
 8         var oT1=parseInt(oTxt1.value);
 9         var oT2=parseInt(oTxt2.value);
10         
11         alert(oT1+oT2);
12     };
13 };
14 </script>
15 </head>
16 
17 <body>
18     <input id="txt1" type="text" />
19     +
20     <input id="txt2" type="text" />
21     =
22     <input id="btn" type="button" value="结果" />
23 </body>
计算器的小例子
 1 <script>
 2 window.onload=function (){
 3     var oTxt1=document.getElementById('txt1');
 4     var oTxt2=document.getElementById('txt2');
 5     var oBtn=document.getElementById('btn');
 6     var oS=document.getElementById('s1');
 7     
 8     oBtn.onclick=function (){
 9         alert(oS.value);
10         
11         var oT1=parseInt(oTxt1.value);
12         var oT2=parseInt(oTxt2.value);
13         
14         alert(oT1+oT2);
15     };
16 };
17 </script>
18 </head>
19 
20 <body>
21     <input id="txt1" type="text" />
22     <select id="s1">
23         <option>+</option>
24         <option>-</option>
25         <option>*</option>
26         <option>/</option>
27     </select>
28     <input id="txt2" type="text" />
29     =
30     <input id="btn" type="button" value="结果" />
31 </body>
计算器的小例子2

 

  parseFloat 整数、小数/浮点数

1 var a='12.13abc';
2 alert(parseFloat(a));   //12.13
点击查看例子

  

  Number 纯数字

1 var a='123abc';
2 alert(Number(a));   //NaN
点击查看例子

 

7、隐式类型转换( 无序人工转换,自动转换 )

  -减     *乘     /除     %模

1 var a='12';
2 var b=5;
3 
4 alert(a*b);
点击查看例子

 

8、运算符

  +   -   *   /   %

  +=   -=   *=   /=   %=

8.2比较运算符   

  <   >   <=   >=   !=   ==

  ===   !==

8.3逻辑运算符   

  !     非 取反

  && 与 并且

  ||  或 或者

 

9、查找某个数   findArr(n)

 1 <script>
 2 var arr=[55,63,18,26,99,-100];
 3 
 4 function findArr(n){
 5     //查看所有数字
 6     for(var i=0; i<arr.length; i++){
 7         //判断数组里面的某个数是否等于参数n
 8         if(arr[i]==n){
 9             //找到了 返回true
10             return true;
11             //这里使用return有两个作用,一个是返回值(相当于alert),第二个是跳出当前的循环或方法,阻止后面的程序的运行。
12         }
13     }
14     //循环结束还没有,证明没找到 返回false
15     return false;
16 }
17 alert(findArr(88));
18 </script>
这是一个重要的例子

 

10、随机数(封装

1 function rnd(n,m){
2     return parseInt(Math.random()*(m-n)+n);   //固定的写法
3 }
4 
5 alert(rnd(1,34));

 

11、真假的判断

  真:true 非零数字都是真 非空字符串 非空对象

  假:false 数字零 空字符 undefined null NaN

12、字符串操作和数组操作

13、时间对象

  var oDate=new Date(); 日期对象

  var y=oDate.getFullYear(); 年

  var m=oDate.getMonth()+1; 月

  var d=oDate.getDate(); 日

  var day=oDate.getDay(); 星期

  var H=oDate.getHours(); 时

  var M=oDate.getMinutes(); 分

  var S=oDate.getSeconds(); 秒


  var MS=oDate.getMilliseconds() 毫秒

  

  oDate.setFullYear

  oDate.setHours

 

  oDate.getTime  时间戳

 

 

14、Math对象

  random

  floor

  ceil

  round

  abs

  sqrt

  pow

  max

  min

  sin

  cos

  atan2

  PI

15、DOM操作

  获取子级  children

  获取父级节点  parentNode

  获取上一个兄弟节点  obj.previousElementSibling||obj.previousSibling

  获取下一个兄弟节点  obj.nextElementSibling||obj.nextSibling

  获取第一个子级

    父级.children[0]

    父级.firstElementChild||父级.firstChild

  获取最后一个子级

    父级.children[父级.children.length-1]

    父级.lastElementChild||父级.lastChild

  创建

    document.createElement();

  插入 (创建完了不会显示,需要插入之后才有显示)

    父级.appendChild();

    父级.insertBefore(obj,obj2);

  删除

    父级.removeChild();

 DOM练习:简易留言板

16、DOM——获取元素信息

  obj.offsetLeft/Top  定位父级的距离

  obj.offsetWidth/Height  盒子模型大小

  offsetParent      获取定位父级

  obj.getBoundingClientRect().left/top/right/bottom  绝对距离(自带的,性能高)

     绝对距离的数值在IE7下面会多出2像素,如果不想多出2像素,可以使用下面的兼容写法(自己封装的,性能低)

<style>
    *{ margin:0;padding: 0; }
    #div1{ width:500px; height:500px; background:red; position:absolute; margin:100px; }
    #div2{ width:300px; height:300px; background:yellow; position:absolute; margin:100px; }
    #div3{ width:100px; height:100px; background:green; position:absolute; margin:100px; }
</style>
<script>
function getPos(obj){
    var l=0;
    var t=0;
    
    while(obj){
//        不知道有多少个父级(不固定次数)用while循环
        l+=obj.offsetLeft;
        t+=obj.offsetTop;
        
        obj=obj.offsetParent;  //一直是自己的父级
    }
    
    return {left:l,top:t};
}
window.onload=function (){
    var oDiv=document.getElementById('div3');
    
    alert(getPos(oDiv).left);
};
</script>

<body>
    <div id="div1">
        <div id="div2">
            <div id="div3"></div>
        </div>
    </div>

 

 

附:获取非行间样式

  高版本浏览器  getComputedStyle(obj,false)[sName];  sName就是style name

          false是兼容低版本(3.x)火狐用的,也可以不写

  IE8兼容写法:    obj.currentStyle[sName];

 

17、事件   

  onload  加载

  window.onload 页面加载完成

  obj.onclick 点击

  obj.onmouseover 鼠标移入

  obj.onmouseout 鼠标移出

  obj.onmousedown 鼠标按下

  obj.onmousemove 鼠标移动

  obj.onmouseup 鼠标抬起     

  obj.onfocus 获得焦点

  obj.onblur 失去焦点

  ondblclick 双击

  onchange 改变

  oninput  输入

  onkeydown  键盘按下

  onkeyup  键盘抬起

  oncontextmenu  鼠标右键

  onmousewheel  鼠标滚轮(苹果电脑没有)

 

1、事件对象

function (ev){

  ev.clientX  鼠标x轴距离

  ev.clientY  鼠标Y轴距离

}

滚动距离

  低版本浏览器

  高版本浏览器

  兼容写法

  

IE9一下不兼容:pageX pageY  自带的滚动距离

获取可视区宽高:document.documentElement.clientWidth/Height

例子:div拖拽

 

事件绑定

  obj.addEventListener('click',fn,false);

  obj.removeEventListener('click',fn,false);解除绑定

事件冒泡

  cancelBubble=true;阻止冒泡

事件委托

  加给父级

  事件源ev.srcElement

  省性能

  给未来元素加事件

运动

  var start=0;

  var iTarget

 

穿墙

 

posted @ 2017-04-26 00:13  萌面君  阅读(229)  评论(0编辑  收藏  举报