一、概述
1、元素(对象)、事件、函数、变量
2、元素的属性相关
(1)属性基本 html 怎么写 js 就怎么写,除了 class 外:div.className=" ";
(2)属性的另外一种写法:div[属性名],这种写法可以传参,上面的不可以;
3、关于 style 属性
(1)style 属性无论是增加还是获取都是取行间,行间没有的话,取值的时候取不到;
(2)style 的优先级高于 className;
4、JS组成:ECMA BOM DOM
二、基础应用
1、基础
(1)变量:弱类型
- 类型的转换:parseInt(字符串转数字)、parseFloat(转为浮点)、隐式转化;
- NaN的判断:isNaN(a);
- 变量的作用域:全局变量和局部变量;
- 闭包:子函数可以使用父函数的局部变量;
(2)运算符
(3)流程控制:if、switch、?(三目)、for、while(break和continue)-----基本和java一样的用法
(4)JSON:可以用:for(var i in json)来进行遍历
2、高级
(1)函数返回值和参数
- arguments(可变参):数组,存的传入的参数,可以用for 遍历
- 获取非行间的样式:
oDiv.currentStyle.width //iE
getComputedStyle(oDiv,null).height //firefox and chrome
- true 和 false:数字0为false,字符串''为false,对象null为false,undefine为false
(2)数组基础
- Array 的length 属性既可以获取也可以设置;
- 数组的方法:
- splice:可以插入、删除和替换:splice(起点,长度,添加的数据)
- concat:数组的连接
- join:元素连接成字符串
- sort:本身只能排字符串,通过定义比较函数来排序数字 :function (n1,n2){return n1-n2}
3、定时器
(1)定时器的作用
- 开启:setInterval(函数,时间)---循环执行;setTimeout()---只执行一次;
- 关闭:clearInterval;clearTimeOut
- 应用:数码时钟,延时提示框、无缝滚动
(2)Date 对象
- 获取时分秒:getHours()、getMinutes()、getSeconds()
- 获取年月日:getFullYear()、getMonth()+1、getDate()、getDay()---星期
(3)运动基础
- 绝对定位:position:absolute;left:50px;top:50px;
- offsetLeft | offsetTop:获取元素的左边距和上边距
三、DOM应用
1、dom基础
(1)dom 节点:
- 父节点的获取:parentNode、offsetParent(获取有定位的父节点);
- 子节点的获取:childNodes和nodeType(也可以用children);
(2) 元素的属性操作:
- obj.value 和 obj["value"]
- setAttribute | getAttribute | removeAttribute
(3)dom元素灵活查找:
- 用 className 来获取元素,封装函数 getByClass(oParent,sClass)
(4)创建、插入和删除元素
- createElement | appendChild(加在末尾,也是先删后加)| insertBefore(节点,指定节点)--加在前面;
- removeChild()
(5)文档碎片(*):createDocumentFragment----几乎不用
2、dom高级
(1)表格应用
- 表格的便捷操作:tHead、tFoot、tBodies、rows、cells;
- 表格的隔行变色;
- 添加和删除一行;
- 搜索和排序;
(2)表单应用
- 事件:onsubmit、onreset;
- 表单的验证;
四、JS运动技术
1、运动基础
2、运动框架
(1)开始运动前先关闭已有的定时器;
(2)将运动和停止的状态用 if else 隔开;
(3)练习:侧边栏、图片的淡入淡出;
3、缓存运动
(1)速度越来越慢,最后停止;
(2)速度=(目标值-当前值)/缩放系数;
(3)缓冲菜单:速度取整;目标值取整;
4、匀速运动的停止条件
(1)距离小于速度就停止;
(2)再手动将元素移到目标点;
5、多物体运动框架
(1)多物体运动框架很多东西都不能公用,定时器和透明度的变量等,解决方法就是给每个元素设置自定义属性;
(2)
6、任意值的运动框架
(1)