1. BOM编程
1.1. BOM编程基础
全称 Browser Object Model,浏览器对象模型。
JavaScript是由浏览器中内置的javascript脚本解释器程序来执行javascript脚本语言的。
为了便于对浏览器的操作,javascript封装了对浏览器的各个对象使得开发者可以方便的操作浏览器。
1.2. BOM对象:
1.3. window 对象
Window 对象是 JavaScript 层级中的顶层对象。
Window 对象代表一个浏览器窗口或一个框架。
Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。
1.3.1. window中的方法
document 对 Document 对象的只读引用 location 用于窗口或框架的 Location 对象 history 对 History 对象的只读引用。 document.tilte 设置网页的标题 moveto() 将窗口左上角的屏幕位置移动到指定的 x 和 y 位置。 moveby() 相对于目前的位置移动。resizeTo() 调整当前浏览器的窗口。 open() 打开新窗口显示指定的URL(有的浏览器中是打一个新的选项卡) setTimeout(vCode, iMilliSeconds) 超时后执行代码。setInterval(vCode, iMilliSeconds) 定时执行代码,第一次也是先待,到时再执行。
2. 事件
a) 事件说明
基本上所有的HTML元素中都可以指定事件属性。
每个元素支持什么样事件应查询文档。
所有的事件属性都是以on开头,后面的是事件的触发方式,如:
onclick,表示单击
onkeydown,表示键按下
...
b) 常用的事件类型:
鼠标点击相关: onclick 在用户用鼠标左键单击对象时触发。 ondblclick 当用户双击对象时触发。 onmousedown 当用户用任何鼠标按钮单击对象时触发。 onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 鼠标移动相关: onmouseout 当用户将鼠标指针移出对象边界时触发。 onmousemove 当用户将鼠标划过对象时触发。 焦点相关的: onblur 在对象失去输入焦点时触发。 onfocus 当对象获得焦点时触发。 其他: onchange 当对象或选中区的内容改变时触发。 onload 在浏览器完成对象的装载后立即触发。 onsubmit 当表单将要被提交时触发。
location 对象
Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息。
location中的重要方法:
href属性 设置或获取整个 URL 为字符串。
reload() 重新装入当前页面
screen 对象
Screen 对象是由 JavaScript runtime engine 自动创建的,包含有关客户机显示屏幕的信息。
属性:
availHeight 获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。
availWidth 获取系统屏幕的工作区域宽度,排除 Windows 任务栏。
height 获取屏幕的垂直分辨率。
width 获取屏幕的水平分辨率。
示例:
document.write("屏幕工作区: " + screen.availHeight + ", " + screen.availWidth + "<br>");
document.write("屏幕分辨率: " + screen.height + ", " + screen.width + "<br>");
document对象
该对象代表整个文档页面
对象的集合:
all 获取页面所有元素对象
forms 获取页面所有表单对象
images 获取页面所有图片对象
links 获取所有超链接或area对象
具体的内容会在学习DOM时学习。
2. DOM
2.1. DOM简介
全称Document Object Model,即文档对象模型。
DOM描绘了一个层次化的树,允许开发人员添加、删除、修改页面的某一部分。
浏览器在解析HTML页面标记的时候,其实不是按照一行一行读取并解析的,
而是将HTML页面中的每一个标记按照顺序在内存中组建一颗DOM树,
组建好之后,按照树的结构将页面显示在浏览器的窗口中。
2.2. 节点层次
HTML网页是可以看做是一个树状的结构,如下: html |-- head | |-- title | |-- meta | ... |-- body | |-- div | |-- form | | |-- input | | |-- textarea ... ... ...
这是一颗树,是由多个节点(Node)组成的,节点的类型有很多种。
节点最多有一个父节点,可以有多个子节点。
HTML DOM 定义了访问和操作HTML文档的标准方法。
document
代表当前页面的整个文档树。
访问属性
all
forms
images
links
body
访问方法(最常用的DOM方法)
获取节点对象案例
document.getElementById("html元素的id")
document.getElementsByTagName("标签名")
document.getElementsByName("html元素的name")
示例:
1,得到所有的div元素并显示信息(innerHTML)。
2,得到所有div元素中id为"test"的结果。
1 Var dom = window.document; 2 function testByTagName() { 3 var iptArr = dom.getElementsByTagName("input"); 4 for (var i = 0; i < iptArr.length; i++) { 5 alert(iptArr[i].value); 6 } 7 } 8 // window 对象提供了一个事件, onload 事件 onload(页面加载完毕执行该代码) 是一个事件, 给事件一个方法, 9 //window.onload = testByTagName;10 //2,得到所有标签id为"username"的结果。获取旧value值并设置value值11 function testById() {12 var user = dom.getElementById("username");13 alert(user.value);14 user.value = "rose";15 }16 //testById();17 //3. 获取所有标签name 为like的元素.获取value值.18 function testByName() {19 var likeArr = dom.getElementsByName("like");20 for (var i = 0; i < likeArr.length; i++) {21 alert(likeArr[i].value);22 }23 }24 testByName();
案例
显示页面任意一个节点对象的所有子节点的nodeName、nodeType、nodeValue
属性操作练习
1,写一个form,其中有多个checkbox。
2,获取所有选中的数量。
3,实现全选与全不选的效果。
1 2 3 4 5无标题文档 6 7 50 51 52 53 54 55商品列表56 全选57 笔记本电脑3000元58 笔记本电脑3000元59 笔记本电脑3000元60 笔记本电脑3000元61 笔记本电脑3000元62 笔记本电脑3000元63 全选64 65 66 67 68
通过节点关系查找节点
从一个节点出发开始查找:
parentNode 获取当前元素的父节点。
childNodes 获取当前元素的所有下一级子元素。
firstChild 获取当前节点的第一个子节点。
lastChild 获取当前节点的最后一个子节点。
nextSibling 获取当前节点的下一个节点。(兄节点)
previousSibling 获取当前节点的上一个节点。(弟节点)
示例1:
firstChild属性最普遍的用法是访问某个元素的文本:
var text=x.firstChild.nodeValue;
示例2:
parentNode 属性常被用来改变文档的结构。
假设您希望从文档中删除带有 id 为 "maindiv" 的节点:
var x=document.getElementById("maindiv");
x.parentNode.removeChild(x);
获取节点对象的信息
每个节点都包含的信息的,这些属性是: nodeType 节点类型 nodeName 节点名称 nodeValue 节点值 nodeType nodeType 属性可返回节点的类型。 --------------------------------- 元素类型 节点类型 ------------------ 元素 1 就是标签元素,例..文本 3 标签元素中的文本 注释 8 表示为注释 nodeName nodeName 属性含有某个节点的名称。 -------------------------------- 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document nodeValue 对于文本节点,nodeValue 属性是所包含的文本。 对于属性节点,nodeValue 属性是属性值。 对于注释节点,nodeValue 属性注释内容。 nodeValue 属性对于文档节点和元素节点是不可用的。
1 2 3 4 36 37 3846 47javascript 39 40 41 哈哈42
节点操作
1.1.1. 创建新节点
document.createElement("标签名") 创建新元素节点
elt.setAttribute("属性名", "属性值") 设置属性
elt.appendChild(e) 添加元素到elt中最后的位置
elt.insertBefore(new, child); 添加到elt中,child之前。
// 参数1:要插入的节点 参数
2:插入目标元素的位置
elt.removeChild(eChild) 删除指定的子节点
1 2 3 4 43 44无标题文档 45 46 47
50 51 | 52
55 56 | 57
99 | 删除附件 | 100
103 104 | 105
案例
- 生成二级城市联动菜单
-
1 2 3 4 5
无标题文档 6 11 55 56 57 64 67 68 - 2.动态生成年、月、日字段
1 2 3 4 121 122javascript 123 124 125 生日:126 129 132 135 136 137
3生产一个验证码
1 2 3 4 34 35javascript 36 37 38 看不清楚39 40 41
正则表达式
位置: ^ 开头 $ 结尾次数: * 0或多个 + 1或多个 ? 0或1个 {n} 就是n个 {n,} 至少n个 {n,m} 最少n个,最多m个通配符: \d 任意数字 \D 任意非数字 \s 任意空白 \S 任意非空白 . 任意字符(除'\n'外)组合: [a-z] [0-9] 等组: (正则) 匹配括号中正则表达式对应的结果,并暂存这个结果。 (?:正则) 匹配括号中正则表达式对应的结果,但不暂存这个结果。 \数字 使用第n个组匹配的结果使用正则的工具(RegExp类与相关方法)创建: // 方式一 var regex = new RegExp("正则表达式", "标志"); // 方式二 var regex = /正则表达式/标志参数说明:正则表达式: 参见上面的规则 标志: g (全文查找出现的所有 pattern) i (忽略大小写) m (多行查找) 方法: Regexp.test( str ) String.replace( regex, str ) 练习:校验表单
1 2 3 4 127 128199 200正则表达式 129 130 131