TOC
Javascript基础
输出语句
alert(s) 弹框
document.write(s) 将字符串输出到界面
console.log(s) 开发者模式显示日志
检查类型
var a=1
console.log(typeof a)
//控制台输出: number
数据类型
- Number
- String
- Boolean
- null :typeof 为 object
- undefinied
- object
对象
基础
类似于python的字典类型
获取属性值的方式
- object[属性名]
- object.属性名
检查对象是否含有属性名
属性名 in 对象
工厂模式创建对象
构造函数
//构造函数
function Person(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
}
var per= new Person("张三",18,"男")
强制转换
String(a)
Number(a)
非数字字符串–>NaN
null–>0
undefined—>NaN
true–>1
false–>0parseInt() 对于非字符串型数据 先转换成字符串
true–>undefinedparseFloat()
进制数
二进制 0b
十六进制 0x
parseInt(a,进制)
函数
创建函数
function fun(){}
fun();
var fun=function(){};
fun();
立即执行函数
(func(a=3,b=5){
console.log(a+b);
})()
数组
数组中的元素可以是任意类型
数组函数
push() 在数组结尾插入元素
upshift() 在数组开头插入元素
pop()删除数组结尾元素
slice(start,end) 负数代表倒数第几个元素;作用:截取开始索引位置到结束索引位置的元素(不包括结束位置)
arr.slice(0,1);
splice(start,count)负数同上,第二个参数表示删除参数的数量;作用:删除范围里的元素;第三个参数以后表示在start索引前插入新的元素
arr.splice(0,1,"1","2");
sort函数
数组遍历(IE8以上的浏览器)
arr.foreach(function(){ console.log("hello"); }); //function可以传参 //第一个参数是正在遍历的元素 //第二个元素是索引值
正则表达式
reg=/[^abc]/; //不包含abc
reg=/^abc$/; //^开始符号,$结束符号
reg=/a{1,3}b/; //a出现1到3次
reg=/.*/; //.表示任意字符,*出现任意次,+出现1到无穷次
reg=/^\s/g; //g为全局匹配模式,/s为空格
//注意reg=字面量和reg=new RegEXP()在转义的区别
定时调用
//将一个函数每隔一段时间执行一次
/*
*——参数:
* 1.回调函数
* 2.时间间隔,单位毫秒
*——返回值
* 返回一个Number类型的数据,
* 这个数字用来作为定时器的唯一标识
*/
var timer = setInterval(function({
count.innerHTML=num++;
},1000);
//关闭定时器
/*
*clearInterval()可以接受任意类型的参数
*如果参数是个有效的定时器标识,那么可以停止
*若不为有效,也不会报错
*/
clearInterval(timer);
延时调用
/*
*延时调用一个函数不马上执行,而是隔一段时间以后调用
*而且只会执行一次
*/
var timer=setTimeout(function(){
console.log("延时调用");
},1000);
JSON
//javascript对象转JSON字符串
var obj = {name:"张三",age:18,gender:"男"}
var str = JSON.stringify(obj)
//将JSON字符串转换成Javescript对象
var obj1 = JSON.parse(str)
DOM(文档对象模型)
文档加载
网页按照从上到下的顺序执行,因此script大多数情况放在HTML代码尾部;若放于
里,可以(下例)window.onload=function(){
var btn=document.getElementById("btn");
}
DOM查询
获取元素的方法
document.getElementById() 通过id属性获取一个对象
document.getElementsByTagName()
通过标签名获取一组元素对象document.getElementByName()
通过name属性获取一组元素对象document.getElementsByClassName()
通过class获取一组元素对象,不支持IE8以及以下的浏览器
读取元素属性
元素.id, 元素 .name, 元素.value
元素.className
获取元素节点的子节点
- getElementsByTagName
- childNodes
表示当前节点的所有子节点(包括文本节点–>元素间的空格)–>不常用 - children
当前节点的所有子节点(不包括文本节点) - firstChild
当前元素的第一个节点(包括文本节点) - lastChild
当前节点的最后一个节点(包括文本节点)
使用DOM操作CSS
使用 元素.style 的方式只能获取内联样式,无法获取样式表的样式
getComputedStyle(element,null)
返回样式属性集合
//获取元素宽度 getComputedStyle(btn,null)['width']
IE8及以下不支持(提供兼容措施)
获取其他样式
- scrollTop 垂直滚动条滚动的距离
- scrollLeft 水平滚动条滚动的距离
- scrollHeight 元素可滚动区域的高度
- clientHeight 可视高度
用途:判断滚动条是否滚动到底部
实现:scrollHeight-scrollTop<=clientHeight
滚动条滚动事件:onScroll
事件对象
定义
- 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数。
- 事件对象中封装了当前事件的一切信息,比如:鼠标的坐标,键盘哪个按键被按下,鼠标滚轮滚动的方向。
代码示例
/*
IE8及以下浏览器中,响应函数触发时,浏览器不会传递事件对象,事件对象是作为window对象的属性保存的。
*/
element.onmousemove=function(event){
event = event || window.event; //考虑兼容性
x = event.clientX;
}
事件冒泡
p114
事件委派
将事件统一绑定给元素的共同祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件
事件绑定
addEventListener
/*不支持IE8以及以下浏览器,事件执行顺序同添加顺序一致 传入的this是触发事件的元素 false表示捕获阶段不执行 */ element.addEventListener("click",function(){ alter(1); },false);
attachEvent
/*仅支持IE8及以下浏览器 this是window */ element.attachEvent("onclick",function(){ alter(1); });
兼容
BOM(浏览器对象模型)
Window
Navigator
代表的当前浏览器的信息,通过该对象来识别不同的浏览器
由于历史原因,Navigator对象的大部分属性都已经不能帮助我们识别浏览器了
一般我们只会使用userAgent来判断浏览器信息:用userAgent可以区分火狐、Chrome、IE8|9|10,但无法区分IE11(Edge)
//区分IE11 if ("ActiveXObject" in window){ alter("IE浏览器") }
Screen
History
作用:对象可以用来操作浏览器向前或向后翻页
属性
length:返回浏览器历史列表中的 URL 数量方法:
- back() 加载 history 列表中的前一个 URL。
- forward() 加载 history 列表中的下一个 URL。
- go(int) 加载 history 列表中的某个具体页面。
1:向前跳转一个页面 = forward()
2:向前跳转两个页面
-1:向后跳转一个界面 = back()
-2:向后跳转两个界面
Location
作用:封装了浏览器地址栏的url信息
跳转地址:
- 直接修改location属性
- location.assign(url)
- location.replace(url) 用新的界面替换当前界面,无法回退(不能使用history.back()方法)
重新加载当前界面:
location.reload(Boolean): 传true清空缓存
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
