有关DOM的小总结
2015-10-07 14:31
225 查看
一直以为DOM(文档对象模型)是JS中最简单的一部分。不可否认,它确实很简单,因为DOM的思维模式有点固定,只需要简单地记住一些固定的方法,所以DOM可以说是所有js(这里指的是客户端的js)入门的起手点。
最近我在做一些有用到DOM的练习时,发现自己的DOM知识非常零散(一直以为掌握的很好),可能有很多朋友都觉得,DOM嘛,也就调用调用几个方法,或者我直接使用jQuery,根本不用考虑DOM的细节。是,这也没错,jQuery对DOM的封装可谓前无古人,但是正如成长一样,跑之前是一定要会走的,所以我认为对DOM必须要有比较详细的了解,于是我总结了如下的关于DOM的一些使用方法。
在W3C总结跪DOM规范中,有一些十分常用的,也有些不怎么有用的,这里我们主要讨论常用一些DOM操作(有关DOM的基本概念在此就不介绍了):
节点层次
所谓节点层次,指的是html文档中存在具有各自特点,数据,方法的节点(例如标签),节点之间的关系构成了层次(其实可以想象成树状结构)。W3C的DOM1级规范中定义了一个NODE接口。这个接口有一些方法是非常有用的:
Node.ELEMENT_NODE;(元素节点)
Node.TEXT_NODE;(文本节点)
Node.DOCUMENT_NODE(文档节点)
而每个节点都有自己的节点类型标志,也就是NodeType属性,例如元素节点的nodeType == '1';文本节点的nodeType == '3';文档节点的nodeType == '9';
1.文档节点
文档节点在一个文档中用document对象表示,它的基本特征如下:
tip one (文档的子节点):
1.document.documentElement可以取到html对象,同样可以通过document.childNodes[0]以及document.firstchild取到。然而 documentElement可以更快,更直接访问元素。
tip two (文档的相关信息):性喜剧http://www.326ys.com/
1.取得文档标题 : document.title;
2.取得完整的url : document.URL;
3.取得域名(ip) : document.domain;
4.取得页面的URL : document.referrer;
tip three (文档查找元素):
1.通过id : document.getElementById("xxx"); 一般页面id会不同,若有多个相同id,则取到第一个有该id的元素。
2.通过tagName : document.getElementsByTagName("xxx"); 返回标签名为"xxx"的元素集合!
3.通过name : document.getElementByName();
理解document对象非常简单,兼容性做的也比较靠前。
2.元素节点
元素节点提供了对元素标签名,子节点及特性的访问。它的基本特征如下:
tip one (html元素) :
<div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div>
var div = document.getElementById("div");
1. console.log(div.id); // "myDiv"
2. console.log(div.className); // "bd"
3. console.log(div.title); // "Body text"
4. console.log(div.lang); // "en"
5. console.log(div.dir); // "ltr"
tip two (取得,设置和删除特性):
1.div.getAttribute("id"); // "myDiv"
2.div.setAttribuye("id","yourDiv"); // id已变动
3.div.removeAttribute("id"); //id已删除
需要注意: 在IE7及以下的版本中,三种方法存在着一些异常行为,通过set设置class 和style特性,特别是事件处理程序时,没有任何效果,get也是同样的。因此一般开发要避免以上三种方法,推荐通过属性来设置特性。
326影视http://www.326ys.com/
tip three (元素的子节点) :
要重点提一下的就是这里了,有如下代码:
3.文本节点
文本节点包含的是可以照字面解释的纯文本内容,纯文本中可以包含转义后的HTML字符,但不能包含HTML代码。文本节点的基本特征如下:
Tip one :
创建文本节点的两个方法:document.createTextNode(),document.createText();
创建好后不会直接嵌入文档中,需要引用。
var a = document.createElement("p");
var b = document.createTextNode("123");
a.appendChild(b);
document.body.appendChild(a);
这样在body末尾会出现<p>123</p>这样的标签
个人认为DOM肯定是学习js的入门点,但是也需要很长时间的打磨。我看了DOM不少于三遍,仅仅是DOM1级规范,每次都有些新东西。如果你学习DOM,那么就一定要注意一些陷阱,同时也要多花时间琢磨。
最近我在做一些有用到DOM的练习时,发现自己的DOM知识非常零散(一直以为掌握的很好),可能有很多朋友都觉得,DOM嘛,也就调用调用几个方法,或者我直接使用jQuery,根本不用考虑DOM的细节。是,这也没错,jQuery对DOM的封装可谓前无古人,但是正如成长一样,跑之前是一定要会走的,所以我认为对DOM必须要有比较详细的了解,于是我总结了如下的关于DOM的一些使用方法。
在W3C总结跪DOM规范中,有一些十分常用的,也有些不怎么有用的,这里我们主要讨论常用一些DOM操作(有关DOM的基本概念在此就不介绍了):
节点层次
所谓节点层次,指的是html文档中存在具有各自特点,数据,方法的节点(例如标签),节点之间的关系构成了层次(其实可以想象成树状结构)。W3C的DOM1级规范中定义了一个NODE接口。这个接口有一些方法是非常有用的:
Node.ELEMENT_NODE;(元素节点)
Node.TEXT_NODE;(文本节点)
Node.DOCUMENT_NODE(文档节点)
而每个节点都有自己的节点类型标志,也就是NodeType属性,例如元素节点的nodeType == '1';文本节点的nodeType == '3';文档节点的nodeType == '9';
1.文档节点
文档节点在一个文档中用document对象表示,它的基本特征如下:
1.document.documentElement可以取到html对象,同样可以通过document.childNodes[0]以及document.firstchild取到。然而 documentElement可以更快,更直接访问元素。
tip two (文档的相关信息):性喜剧http://www.326ys.com/
1.取得文档标题 : document.title;
2.取得完整的url : document.URL;
3.取得域名(ip) : document.domain;
4.取得页面的URL : document.referrer;
tip three (文档查找元素):
1.通过id : document.getElementById("xxx"); 一般页面id会不同,若有多个相同id,则取到第一个有该id的元素。
2.通过tagName : document.getElementsByTagName("xxx"); 返回标签名为"xxx"的元素集合!
3.通过name : document.getElementByName();
理解document对象非常简单,兼容性做的也比较靠前。
2.元素节点
元素节点提供了对元素标签名,子节点及特性的访问。它的基本特征如下:
<div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div>
var div = document.getElementById("div");
1. console.log(div.id); // "myDiv"
2. console.log(div.className); // "bd"
3. console.log(div.title); // "Body text"
4. console.log(div.lang); // "en"
5. console.log(div.dir); // "ltr"
tip two (取得,设置和删除特性):
1.div.getAttribute("id"); // "myDiv"
2.div.setAttribuye("id","yourDiv"); // id已变动
3.div.removeAttribute("id"); //id已删除
需要注意: 在IE7及以下的版本中,三种方法存在着一些异常行为,通过set设置class 和style特性,特别是事件处理程序时,没有任何效果,get也是同样的。因此一般开发要避免以上三种方法,推荐通过属性来设置特性。
326影视http://www.326ys.com/
tip three (元素的子节点) :
要重点提一下的就是这里了,有如下代码:
3.文本节点
文本节点包含的是可以照字面解释的纯文本内容,纯文本中可以包含转义后的HTML字符,但不能包含HTML代码。文本节点的基本特征如下:
创建文本节点的两个方法:document.createTextNode(),document.createText();
创建好后不会直接嵌入文档中,需要引用。
var a = document.createElement("p");
var b = document.createTextNode("123");
a.appendChild(b);
document.body.appendChild(a);
这样在body末尾会出现<p>123</p>这样的标签
个人认为DOM肯定是学习js的入门点,但是也需要很长时间的打磨。我看了DOM不少于三遍,仅仅是DOM1级规范,每次都有些新东西。如果你学习DOM,那么就一定要注意一些陷阱,同时也要多花时间琢磨。
相关文章推荐
- BNUOJ 24251 Counting Pair 配对计数 【数论】
- 大话数据库技术之数据的检索
- UVA-806 Spatial Structures (四分树)
- 【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简)
- 基于iOS开发对Swift构造方法的感悟
- Java笔记--线程安全与锁优化
- github上的安卓开源库汇总
- 【源】从零自学Hadoop(07):Eclipse插件
- Guava新增集合类型-Bimap(5)
- Effective Java 读书笔记(一):使用静态工厂方法代替构造器
- 更改Ruby的源
- Activity的四种启动模式
- 【iOS】UITableView实现的瀑布流效果
- SQLSERVER 备份方案的选择
- 2015年传智播客各学科学费价格表
- Azure Redis Cache (1) 入门
- 多矩形碰撞
- java session 监听
- JDK自带工具一览表。妈妈再也不用担心你到处去下载小软件了~~
- POJ - 3709 K-Anonymous Sequence(斜率优化)