节点类型
nodeType
以下是一些重要的nodeType的取值: 1: 元素element 2: 属性attr 3: 文本text 8: 注释comments 9: 文档documentnodeName,nodeValue
节点关系
childNodes: 每个节点都有一个childNodes属性,其中保存着一个NodeList对象firstChild: 等同于childNodes[0]
lastChild: 等同于childNodes.length-1
同时通过使用列表中每个节点的prevIoUsSibling和nextSibling属性,可以访问同一列表中的其他节点。
操作节点
appendChild()
appendChild()方法用于向childNodes列表的末尾添加一个节点。添加节点后,childNodes的新增节点、父节点及以前的最后一个子节点的关系指针都会相应地得到更新。
insertBefore()
insertBefore()这个方法接受两个参数:要插入的节点和作为参照的节点。// 插入后成为第一个节点
returnedNode = someNode.insertBefore(newNode,someNode.firstChild);
returnedNode = someNode.insertBefore(newNode,someNode.firstChild);
// 插入到最后一个子节点前面
returnedNode = someNode.insertBefore(newNode,someNode.lastChild);
repaceChild()
repaceChild()接受两个参数,要插入的节点和要替换的节点removeChild()
只移除而非替换节点。cloneNode()
item 1 item 2 item 3
var shallowList = myList.cloneNode(false);
console.log(shallowList.childNodes.length); //0
console.log(shallowList.childNodes.length); //0
Document类型
Document节点具有下列特征:
- nodeType的值为9;
- nodeName的值为#document;
- nodeValue的值为null;
- parentNode的值为null;
- ownerDocument的值为null;
文档的子节点
的引用
console.log(html === document.childNodes[0]); // true
console.log(html === document.firstChild); // true
文档信息
标题
var originalTitle = document.title;
// 设置文档标题
document.title = "New page title";
// 取得完整的url
var url = document.URL;
// 取得域名
var domain = document.domain;
// 取得来源页面的url
var referrer = document.referrer;
//假设页面来自p2p.wrox.com域
document.domain = "wrox.com"; // 成功
document.domain = "nczonline.net"; // 失败
在IE7中调用document.getElementById("myElement");结果会返回元素,如下所示; 最好的办法是不让表单字段的name特性与其他元素的ID相同。
特殊集合
- document.anchors,包含文档中所有带name特性的a元素;
- document.forms,包含文档中所有form元素,与document.getElementsByTagName("form")得到的结果相同;
- document.images,包含文档中所有的img元素,与document.getElementsByTagName("img")得到的结果相同;
- document.links,包含文档中所有带href特性的a元素;