一、DOM介绍
DOM:Document Object Model
文档对象模型,用来表示和操作html或xml文档内容的基础API;
当网页被加载时,浏览器会创建对应的文档对象模型,而DOM模型被构造为对象的树(DOM Html Tree 简称DOM树,详见资料res)
DOM包含了所有的html标签、文本字符串、甚至时html注释。
利用DOM中的属性和方法,使程序有能力动态的访问和更新文档中的内容、结构及样式,这样就使得页面的交互性大大的增强。
DOM节点属性:
nodeName 节点名称
nodeValue 值,只有注释、文本等节点有
nodeType 节点类型
返回的是一个数字 文档document - 9 元素element - 1 属性attribute - 2 文本text - 3
注释comment-8
1
2
3
4
5
6
7
8
9
- 呵呵
-
10
- 哈哈
-
11
- 嘿嘿
-
12
- 嘻嘻
-
13
14
15
16 console.log(document.nodeType);
17
18 var list = document.getElementById(“list”);//9
19
20 console.log(“list节点名称:”,list.nodeName,‘值:’,list.nodeValue,‘节点类型:’,list.nodeType);//list节点名称: UL 值: null 节点类型: 1
21
22 //获取第一个子元素
23 var li1 = list.firstElementChild;
24 console.log(“li1节点名称”,li1.nodeName,“值:”,li1.nodeValue,“节点类型:”,li1.nodeType)//li1节点名称 LI 值: null 节点类型: 1
25 //获取第一个子节点
26 var fc = li1.firstChild;
27 console.log(“fc节点名称”,fc.nodeName,“值:”,fc.nodeValue,“节点类型:”,fc.nodeType)//fc节点名称 #text 值: 呵呵 节点类型: 3
28 //获取最后一个子节点
29 var fc2 = li1.lastChild;
30 console.log(“fc2节点名称”,fc2.nodeName,“值:”,fc2.nodeValue,“节点类型:”,fc2.nodeType)//fc2节点名称 #comment 值: 这是注释 节点类型: 8
31
32
二、document对象属性
document.documentElement 获取根元素htmldocument.body 获取body元素
document.title 获取文档的标题
1
2
3
4
5
Document对象属性 6
7
8
9
- 呵呵
-
10
- 哈哈
-
11
- 嘿嘿
-
12
- 嘻嘻
-
13
14
15
16 console.log(document.documentElement);
17 console.log(document.body);
18 console.log(document.title);
19
20 //浏览器兼容性获取视口宽度和高度
21 var aHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
22 var aWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
23 document.write(“视口宽度:” + aWidth + “px”+";高度:"+aHeight + “px”);
24
25
三、获取元素的方法
document.getElementById() 通过id获取元素docuement.getElementsByTagName() 通过标签名获取元素
document.getElementsByClassName() 通过类名获取元素
后面两个都是获取的类数组,即多个元素
具有length属性,具有索引,通过索引可以获取对应的元素
1
2
3
4
5
Document对象属性 6
7
8
9
- 呵呵
-
10
- 哈哈
-
11
- 嘿嘿
-
12
- 嘻嘻
-
13
14
15
16 //通过id获取元素ul
17 var list = document.getElementById(‘list’);
18 console.log(“list:”,list);
19
20 // 通过标签名获取所有的li
21 var lis = list.getElementsByTagName(‘li’);
22 console.log(lis);//HTMLCollection(4) [li, li, li, li] 类数组
23
24 //通过innerHTML可以获取和修改元素内的内容
25 console.log(lis[0].innerHTML);
26 lis[3].innerHTML = “这是改过后的内容”;
27 console.log(lis[3].innerHTML);
28
29
30 //通过类名获取元素
31 var item3 = document.getElementsByClassName(‘item3’)[0];
32 console.log(item3);
33
34
四、设置和获取html属性的方式
4.1 通过对象的方式设置和获取属性
obj.att || obj[‘att’]4.2 通过get/set方式设置和获取属性
setAttribute(att,value);getAttribute(att);
1
2
3
4
5
Document对象属性 6
7 .p1-set{
8 background: red;
9 }
10
11 .p2-set{
12 color: orange;
13 font-size: 20px;
14 }
15
16 .p3-set{
17 font-family: “楷体”;
18 font-weight: 900;
19 }
20
21
22
23
通过对象.属性的方式添加html属性
24
通过对象[属性]的方式添加html属性
25
通过setAttribute()的方式添加html属性
26
27
28 var p1 = getId(“p1”);
29 var p2 = getId(“p2”);
30 var p3 = getId(“p3”);
31
32 console.log(“p3”,p3);
33
34 //obj.att
35 p1.className = “p1-set”;
36 p1.align = ‘center’;
37 console.log(p1.id);
38
39 p1.mydefined = “hello”;
40 console.log(p1.mydefined )
41
42 //obj[“att”]
43 p2[“className”] = “p2-set”;
44 p2[‘data-defined’] = “world”;
45 console.log(p2[‘data-defined’]);
46
47
48 //get/set方法
49 p3.setAttribute(“class”,‘p3-set’);
50 console.log(p3.getAttribute(‘id’));
51 p3.setAttribute(“aaa”,‘111’);
52 p3.setAttribute(“data-defined”,‘mydefined’);
53
54 console.log(p1.getAttribute(‘data-set’));
55 console.log(p1.getAttribute(‘ss’));
56
57 function getId(id){
58 return document.getElementById(id);
59 }
60
61