1、BOM: 基于浏览器的结构模型
location : 例如:locaiont.href="";
history : 例如 histroy.go( -1 );
window.close() 关闭
open("URL")
navigator 获取浏览器信息,比如navigator.appName
screen 屏幕信息 比如:screen.width screen.height
2、DOM
节点:节点其实就是元素标签。
子节点:firstChild、lastChild、firstElementChild、lastElementChild( 首先firstChild在FF下是会识别特殊字符的比如 换行、空格等,在IE下不会,但是firstElementChild 只会返回元素节点。)
父节点: parentNode 其实就是找上一级的节点元素。
兄弟节点:nextSibling(下一个兄弟节点) 、previousSibling(上一个兄弟节点)、nextElementSibling、previousElementSibling
事件: 其实就是交互的一个响应动作。
onclick 点击事件
onblur 失焦事件
onfocus 聚焦事件
onkeyup 键盘释放事件
onkeydown 键盘按下事件
onchange 改变值的失焦事件
onsubmit 表单提交事件
onreset 表单重置事件
onmouseover 鼠标移入事件
onmousemove 鼠标移动事件
函数:其实就是一个代码片段
var abc = function(){
}
function abc(){
}
表单:<form> 用于提交表单内输入的信息。
action: URL地址
method:GET POST
GET:
URL为明文 也就是显示在地址栏里
相对不安全
长度是有一定的限制的。
POST:
URL为密文
相对安全
长度相对没有限制
name:
enctype:支持文件上传
内部标签:
<input type="text"/> 单行文本框
<input type="checkbox"/> 复选框
<input type="submit"/> 提交按钮
<input type="button"/> 按钮
<input type="password"/> 密码框
<input type="radio"/> 单选框
<input type="reset"/> 重置按钮
<input type="hidden"/> 隐藏框
<button></button> 按钮
<select><option value="1">AAA</option></select> 下拉菜单
<textarea></textarea> 富文本 cols 列 rows 行
disabled 不可用 readonly 只读
注意:如果需要提交表单的话,要加入属性name,不然后台接受不到。
3、作用域
预解析:事先把程序里的var 和 function 预编译,而后再按照执行顺序从上到下执行。
预解析法则:
1、JS里没有块作用域,只有函数作用域,全局的变量,在局部是可以使用,但是局部的变量,全局不可以使用。
2、就近原则。特指在函数作用域内,如果作用域内有被定义,那么就取作用域内的变量,如果没有,则去外层找。注意:在作用域内如果变量没有加var,而这个已经被定义,那么这个变量就是全局变量。
3、在JS中,如果参数和局部变量相同的话,会有优先级概念,一般会相当于在局部内定义了一个变量var,而不去找全局的变量。
4、在JS中,如果多个参数都相同的情况,打印的时候一般是输出最后一个参数的值。
总结:
BOM还是比较容易理解.
DOM,书写函数的两种格式都要会function abc(){
}
var abc = function(){
}
两种事件的不同写法:
document.getElementById.onclick = function(){
}
document.getElementById.addEventListener = function( "click", function(){
});
两种获取控件值的方法:
getElementById("") 通过ID获取 返回的是元素
getElementsByName("") 通过Name获取 返回的是数组
注意:ID是唯一的 Name是可以多个的。就像是身份证和姓名的区别。
函数最难的地方就在作用域,了解作用域之前还要先清楚预解析,预解析其实就是把JS代码中的所有的var,function 执行预编译,再把代码从上到下按顺序执行。注意:所有的var 变量 不管是有没有赋值,它的预解析结果都为undefined。