JS基础

JS调用有三种方式
1 外嵌式
《script src=‘js文件的地址’></script》
2 内嵌式
在body界面,《script>输入Js内容</script》
3 行内嵌
《div οnclick=“alert(‘hello world’)”>点我</div》
alert()输出语句
prompt() 输入语句
循环
while(){};
do{}while();

for(var i=0;i<=;i++){};
for(var k in []){}
函数:
function(){}
若不确定多少个参数时,用arguments获取。
JS基础
JS基础

函数的两种声明方式:除了上面一种,还有一种,函数表达式
var 变量名 =function(){};匿名函数//
全局变量/局部变量
全局变量:在外面 var i=0;i就是全局变量
或者,在函数内部,function(){i=0};没有用var声明,直接赋值,也算全局变量。
局部变量:在函数内部声明且赋值。
JS预解析+代码执行
var a=b=c=9实际上就是var a=9;b=9,c=9;若在函数内部声明。就是全局变量。
js预解析会找到所有的var不赋值 和函数不调用,将其提到最前面进行解析。接着再执行下面的语句。
JS基础
JS基础
JS基础

结果是undefined;
对象
创建方法:
1 var obj={a:1,b:2};
2 构造函数 function Star(a,b){
this.a=a;
this.b=b
}
var a=new Star(1,2);***
调用
obj.a;
obj[a];
obj.sayha();调用方法
遍历:
for(var k in obj ){
log[k];k是属性名
log[obj[k]]//这个是属性值。
}
内置对象
如Math 不是构造函数,直接调用
Math.abs()绝对值
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四舍五入,值得注意的是,-3.5会变成-3,而-3.6变成-4.负数的0.5需要注意。
随机数 math.random() //取到0-1的小数(不等于1)
两个数之间的随机函数
function get(max,min) {
return Math.floor(Math.random(0*(max-min+1)+min);
}只需知道,用的时候过来调用。

对于时间对象Date();
var date=new Date();
console.log(date);
JS基础
date.getMonth();获取月份,比实际上少一个月,
date.getDate();获取号
date.getDay();获取星期几
date.getTime();获取毫秒
var t=+new Date();获取毫秒
Date now();获取毫秒
获取毫秒后
d=parseInt(t/60/60/24) 获取天数
h=parseInt(t/60/60%24) 获取小时
m=parseIn(t/60%60)获取分钟
s=parseInt(t%60)获取秒

数组
var arr=[1,2,3]
var arr=new Array(2,3) //arr=[2,3]
方法:
instanceof(检测)
arr instanceof of Array 结果是true
Array.isArray(arr)
添加删除
arr.push();在尾端加入
arr.unshift();在开头
arr.pop();删最后一个并返回
arr.reserve();翻转
arr.sort();排序
arr.sort(function(a,b){
return a-b; //升
return b-a;//降
});
arr.IndexOf();返回索引号,不存在就返回-1
arr.lastIndexof();从后面找
数组-》字符串
arr.toSrting();
arr.Join(’,’);拼接起来
字符串-》数组
str.split(’,’);
‘123,123’->[123,123]

DOM
dom是文档对象模型,处理html的接口。
文档:documet
元素:element(标签)
节点:Node(所有内容)
获取元素
通过ID document.getElementByID(‘xx’)
IE9以上支持的
通过类名 document.getElementByClassName(‘xx’)
通过选择器
document.querySelector(‘a’)a可以是#id,.class各种选择器,但只能选第一个出来
document.querySelectorAll(’’)选所有
获取特殊元素
1 body document.body
2 html document.documentElement
获取返回的元素对象
console.dir()
*

*事件

事件源+事件类型+事件处理程序
获取事件源-绑定事件-添加处理程序。
事件:
点击 : onclick
鼠标经过:mouseover 鼠标离开:mouseuot
键盘按下:keydown
绑定事件:
两种方式
var btn=document.querySelector(‘button’);
1 btn.οnclick=function(){}
2 btn.addEventListener(‘click’,function(){})
改变内容
1 p.innerHTML=’<h2》1《/h2>‘里面的h2会被渲染出来
2 p.innerText=’<h2》1</h2》‘里面的h2会被直接读书去。
console.log(p.innerText) 不会换行JS基础
console.log(p.innerHTML)会换行
JS基础
表单元素
var i =…
i.style.xxx=’’;改变属性样式
i.calssList.add(’’)增加类名
i.classList.remove(’’)移除类
表单事件
onfocus 获得焦点 onblus 失去焦点

属性值

获取属性值
i.getAttribute(‘属性’);
设置属性
i.index=xx;
i.setAttribute(‘index’,‘x’);
移除属性:
i.removeAttribute(‘index’);

父子节点

div.parentNode;
div.childNodes;(所有子节点)包括空行什么的
div.children(所有的元素子节点),可以用数组的方法调用,返回为数组
JS基础
JS基础
JS基础
JS基础
JS基础
JS基础

兄弟节点

i.nextsibling下一个节点
i.nextElementSibling 下一个元素节点
i.previousElementsibling上一个元素节点

创建节点

var li=document.createElement(‘li’);
添加节点
node.appendchild(li);在最后面添加
node.insertBefore(指定地方,li);在最前面添加
删除节点
node.remove(li);


组织链接跳转
href=‘javascript:;’
复制节点
node.cloneNode()‘浅复制’
node.cloneNode(true)‘深复制’
动态生成表格思路
data={
{name:1,age:15},
{name:2,age:18}
}
根据datas个数生成tr,根据datas里面的每个对象里面的每个属性数生成td,然后添加。
三种创建节点比较:
1 document.write(’<div 123 /div>’)若文档写入完毕,会页面重整,
2 i.innerHTML="<a /a>"
3 document.creatment(‘li’);

删除事件

1 e.οnclick=null;这个只能删除通过e.οnclick=fun(){}绑定的事件
2 i.οnclick=function(){e.removeEventListener(type,Listener)}
点击i,解绑e的事件,

DOM事件流

1 捕获阶段 2 目标阶段 3 冒泡阶段
i.addEvebtListener(’’,function(){},true)true表示处于捕获阶段
默认是flase,flase是属于冒泡阶段

事件流
i.οnclick=function(e){}
e.target 返回触发事件的对象 ,即i
e.type 返回事件,是点击还是。。。
阻止默认
比如阻止a跳转 e.preventDeafult();
阻止冒泡
i.addE…(’’,function(){ e.stopPropaggation(); },flase)即使是flase,也不会冒泡。

事件委托原理
不给子节点设置事件监听器,而是将其设置在父节点上,然后利用冒泡原理影响每个子节点

常用的鼠标事件
鼠标右键:contextmenu
鼠标移动:mouseover
禁止选中:selectSrart
鼠标事件对象
e.clienX,e.clienY,可视区内的x,y坐标
e.pageX,e.pageY,整个页面的x,y坐标
键盘事件
onkeyup 松开的时候触发
onkeydown 按下的时候触发 这两个均不区分大小写
onkeypress 按下的时候触发,区分大小写
键盘事件对象
e.keycode 返回按下那个键的ascll值
获取焦点
JS基础
JS基础
JS基础
JS基础

Bom 浏览器对象模型

window.addE…(‘load’,function(){
所有js
}) //当页面加载完再运行里面的js代码

window.addE…(‘DOMcontentLoaded’,function(){
所有js
}) //当页面加载完(不包括图片,样式)再运行里面的js代码

定时器
var time=setTimeout(fun(){},2000)2000豪秒后触发
停止 window.clearTimeout(time);
setInterval(fun(){},2000),重复调用
停止方法也一样
JS是单线程
同步任务执行栈,异步任务:将异步任务放入队中;
先执行同步,再执行异步。
location对象
location.href 地址
location.search 得到参数
location.assign();跳转
location.repalce();替换,不后退
location.reload();重新加载

PC网页特效

i.offsetParent();返回带有定位的父节点,父节点没定位返回body
i.offsetTop 若父盒子有定位,就是返回盒子到父盒子顶部的距离,若父盒子没有定位,就返回盒子到页面上端的距离
i.offsetLeft 左边的位置,跟上一个一样
i.offsetWidth 返回元素的宽度,包括padding,border
i.offsetHeight 返回元素的高度
返回的值没有单位
函数调用
(function(){})();立即执行的函数
(function(w){console.log(w)}(e))读了创建了一个作用域

元素滚动
e.scrollTop()返回元素被卷去的上侧距离
e.scrollLeft()
e.scrollWidth();不含边框,含Padding
e.scrollHegith();

window.pageYoffset() 整个页面被卷去的头部
window.pageXoffset()

鼠标事件:
monseenter 鼠标经过触发,不会冒泡
monseover 鼠标经过触发,会冒泡

节流阀:
作用是让上一个函数执行完毕后再执行下一个。
设置a=1,当a=1,执行A,执行完后设a=2;,当a=2,执行B.,执行完后设a=1;
初始值a=1;执行A,因为a=1,不执行B。当A执行完后,a=2,执行B,不执行A。当B执行完后,a=1,执行A。。。
页面跳转
window.scroll(x,y)x,y不加单位