b. HTML DOM 对table的操作有一套专门的API
caption 指向<caption/>元素(如果存在)
tBodies 指向<tbody/>元素(如果存在)
tFoot 指向<tfoot/>元素(如果存在)
tHead 指向<thead/>元素(如果存在)
rows
createTHead()
createTFoot()
createCaption()
deleteTHead()
deleteTFoot()
deleteCaption()
deleteRow(position)
insertRow(position)
<tbody/>元素添加了以下内容:
rows
deleteRow(position)
insertRow(position)
<tr/>元素添加了以下内容:
cells
deleteCell(position)
insertCell(position)
c. NodeIterator用来遍历对象
这个对象的构造函数有四个参数:
root : 从树中开始搜索的那个节点
whatToShow : 一个数值代码,代表一个枚举,后面详细介绍
filter: 自定义的NodeFilter对象,决定需要忽略哪些节点
entityReferenceExpansion : bool值,表示是否需要扩展实体引用
通过下面一个或者多个常量的与或操作,可以设置whatToShow的值:
NodeFilter.SHOW_ALL
NodeFilter.SHOW_ELEMENT
NodeFilter.SHOW_ATTRIBUTE
NodeFilter.SHOW_TEXT
NodeFilter.SHOW_CDATA_SECTION
NodeFilter.SHOW_ENTITY_REFERENCE
NodeFilter.SHOW_ENTITY
NodeFilter.SHOW_PROCESSING_INSTRUCTION
NodeFilter.SHOW_COMMENT
NodeFilter.SHOW_DOCUMENT
NodeFilter.SHOW_DOCUMENT_TYPE
NodeFilter.SHOW_DOCUMENT_FRAGMENT
NodeFilter.SHOW_NOTATION
方法:
// 不使用自定义NodeFilter参数,可以传入null
var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, null , false );
var node1 = iterator.nextNode();
var node2 = iterator.nextNode();
var node3 = iterator.previousNode();
alert(node1 == node3); // output "true"
// 扩展NodeFilter对象,该对象只有一个方法acceptNode()
var myNodeFilter =
{
acceptNode : function(oNode)
{
return (oNode.tagName == "p") ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
}
}
或者
var myNodeFilter = new Object();
myNodeFilter.acceptNode = function (oNode)
{
return (oNode.tagName == "p") ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
}
// 使用自定义NodeFilter对象:
var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, myNodeFilter, false );
// 如果使用NodeIterator遍历,如果使用自定义的NodeFilter,忽略掉一个节点,它也就不遍历该节点的子节点了,
// 所以子节点也会被忽略,如果不想忽略,就要使用下面的TreeWalker
d. TreeWalker有点像NodeIterator的大哥:它有NodeIterator所有的功能(nextNode()和previousNode()),并且添加了一些遍历方法:
parentNode()----进入当前节点的父节点
firstChild()----进入当前节点的第一个子节点
lastChild()----进入当前节点的最后一个子节点
nextSibling() ----进入当前节点的下一个兄弟节点
previousSibling()----进入当前节点的前一个兄弟节点
可以通过 document.createTreeWalker() 来创建TreeWalker