这是在东臣正式学习PHP的第二个礼拜,相对于上礼拜的HTML、JS学习内容,这个礼拜讲的DOM、BOM相对来讲更加陌生一些。同样也深深感觉到对于有些知识点老黄在讲解的时候能够很快的理解,但是实际操作起来还是生疏的可怜。在学校上课的时候1节课45分钟,简直就是煎熬,但是经过这两周的学习,真心感觉上课时间过的好快,一天可以说一晃眼就过去了。
一周的学习,我感觉对于节点、预解析和作用域的使用,思路还不是非常的清晰,还学要多加操作练习。一周学习重点总结如下:
一、JS 数组、预解析小结
数组:数据的集合;
常用的数组操作:
1、创建数组:var array = new Array();
2、连接数组元素 :newArray.concat( arrayB );
3、在数组的尾部加入一个数值 :newArray.push( 1 );
4、删除数组的最后一个元素 :newArray.pop( );
5、用字符串连接数组的元素,返回字符串 :newArray.join(",")
6、分割字符串,返回数组 newArray.split(",")
7、返回数组中的某段元素: newArray. slice( 1,2 ); 【注意:如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。】
8、移除数组中某段位置的元素,返回所移除的元素 : newArray.splice( 1(开始位置), 2(删除个数) );
9、sort 数组排序: numArray.sort()
二、BOM
BOM(Browser Object Model)提供了访问浏览器各种功能部件的途径,简单的可以理解为BOM是浏览器窗口的产品结构,也是联系与沟通各项的纽带。
BOM中各对象之间的层次关系:
1、window对象是顶层对象,其它对象均是其子对象;
2、history浏览器的浏览历史;
3、location对象代表当前显示的文档的地址
4、Navigator对象提供有关浏览器的各种信息
5、setTimeout( 代码片段,执行时间(毫秒) ); 定时器
6、setInterval( 代码片段,定时调用的间隔时间(毫秒))
7、screen对象提供显示器屏幕相关的一些信息,例如:window.screen.height 可以查看屏幕的分辨率
三、DOM
DOM(Document Object Model)提供了访问浏览器中网页文档各元素的途径,包括页面中的超链接、 表单等各种HTML元素及其内容。
节点:元素标签。
1、访问第一个子节点:document.firstChild
2、处理属性节点:
获取属性节点的某一个属性的值:getAttribute(name)
创建属性节点,并设置属性的值:setAttribute(name,value)
删除属性名为name的属性节点:removeAttribute(name)
3、事件:是交互的一个必备的过程。
常用的事件:1、onblur 失焦事件2、onfocus 聚焦事件3、onclick 点击事件4、onchange 值改变事件5、onmouseover 鼠标移动到元素事件6、onsubmit 表单提交事件7、onload 文档加载结束事件 8、onkeypress 按键按下事件9、onkeyup 按键释放事件
注册一个事件:addEventListener。
移除一个事件:removeEventListener
四、函数预解析、作用域
1、函数先编译再执行,执行阶段遵循从上到下的原则。
2、预解析:把JS代码中的所有的var,function 执行预编译,再把代码从上到下按顺序执行。注意:所有的var 变量 不管是有没有赋值,它的预解析结果都为undefined。
3、函数作用域
1、JS中,没有块作用域,只有函数作用域,全局变量可以全局使用,但是局部变量不能在全局使用。
2、就近原则。在函数内,所有的变量会进行预解析,也就是说如果在函数内,有函数存在并且赋值了,那这个变量的初始值还是undefined。直到赋值过后使用开始,这个值重新被赋予。【注意:就近原则是指,在当前作用域范围内优先查找,如果找不到则去外层查找。】
3、在JS中,如果参数名和局部的变量名相等的时候,是会有优先级的情况的,一般优先执行参数。【注意:在JS中,是可以重新定义变量或者函数的。通过在相同的表示方法内,如果需要开启预解析,一般会后面的函数替换掉前面的函数。】