DOM基础
第六章DOM基础
一、使用DOM
1.获取html对象
nodeName\nodeValue\nodeType\ownerDocument\firstChild\lastChild\childNodes\
previousSibling\nextSiling\hasChildNodes\attributes\appendChild\removeChild
replaceChild\insertChild
node接口定义的不同的节点类型常量(数字表示相应的类型)
1=Node.ELEMENT_NODE
2=Node.ATTRIBUTE_NODE
3=Node.TEXT_NODE
4=Node.CDATA_SECTION_NODE
5=Node.ENTITY_REFERENCE_NODE
6=Node.ENTIRY_NODE
7=Node.PROCESSING_INSTRUCTION_NODE
8=Node.COMMENT_NODE
9=Node.DOCUMENT_NODE
10=Node.DOCUMENT_TYPE_NODE
11=Node.DOCUMENT_FRAGMENT_NODE
12=Node.NOTATION_NODE
varoHtml=document.documentElement;
//获取子节点
oHtml.childNodes.item(0)或者oHtml.childNodes[index]
o.attributes.getNamedItem(name)返回nodeName等于name的节点
o.attributes.removeNamedItem(name)删除nodeName等于name的节点
o.attributes.setNamedItem(node)将node插入到节点中,按nodeName属性进行索引
o.attributes.item(pos)获取pos位置节点
o.getAttribute(name)
o.setAttribute(name,newvalue)
o.removeAttribute(name)
getElementsByTagName()
getElementsByName()
getElementById
2.创建和操作节点
createElement()\createTextNode()\appendChild()
functioncreateElement(){
varoP=document.createElement("input");
varoText=document.createTextNode("value");
oP.appendChild(oText);
document.body.appendChild(oP);
}
removeChild()\replaceChild\insertBefore()
createDocumentFragment()创建一个文档碎片,把所有新节点附加其上,然后把文档碎片的内容一次性添加到document中。
functioncreateElement(){
vararrText=["first","second","third"];
varoFragment=document.createDocumentFragment();
for(vari=0;i<arrText.length;i++){
varoP=document.createElement("p");
varoText=document.createTextNode(arrText[i]);
oP.appendChild(oText);
oFragment.appendChild(oP);
}
document.body.appendChild(oFragment);
}
3.HTMLDOM特征功能
eg:<imgclass="abc"src="abc.jpg"border="0"/>
oImg=document.getElementsByTagName("img");
oImg.getAttribute("src")=oImg.src;
oImg.setAttribute("src","a.jpg")=(oImg.src="a.jpg")
但是对于class属性要这样获取oImg.className
HTMLDOM给<table/>/<tbody>/<tr/>添加的新特性和方法
给<table/>元素添加了以下内容
caption-指向<caption/>元素
tBodies-<tbody/>元素集合
tFoot-指向<tfoot/>元素
tHead-指向<thead/>元素
rows-表格中所有行的集合
createTHead-创建<thead/>元素并将其放入表格
createTFoot-创建<tfoot/>元素并将其放入表格
createCaption-创建<caption/>元素并将其放入表格
deleteTHead-删除<thead/>元素
deleteTFoot-删除<tfoot/>元素
deleteCaption-删除<caption/>元素
deleteRow(position)-删除指定位置上的行
insertRow(position)-在指定位置插入行
<tbody/>元素添加了以下内容
rows-<tbody>中所有行的集合
deleteRow(position)-删除指定位置上的行
insertRow(position)-在指定位置插入行
<tr/>元素添加了以下内容
cells-<tr/>元素所有单元格集合
deleteCell(position)-删除给定位置上单元格
insertCell(position)-在指定位置插入一个新的单元格
//创建表格
varoTable=document.createElement("table");
oTable.setAttribute("border","1");
oTable.setAttribute("width","100%");
//createthetbody
varoTbody=document.createElement("tbody");
oTable.appendChild(oTbody);
//createthefirstrow
oTbody.insertRow(0);
oTbody.rows[0].insertCell(0);
oTbody.rows[0].cells[0].appendChild(document.createTextNode("Cell1,1"));
oTbody.rows[0].insertCell(1);
oTbody.rows[0].cells[1].appendChild(document.createTextNode("Cell2,1"));
//createthesecondrow
oTbody.insertRow(1);
oTbody.rows[1].insertCell(0);
oTbody.rows[1].cells[0].appendChild(document.createTextNode("Cell1,2"));
oTbody.rows[1].insertCell(1);
oTbody.rows[1].cells[1].appendChild(document.createTextNode("Cell2,2"));
//addthetabletothedocumentbody
document.body.appendChild(oTable);
遍历DOM------NodeIterator
NodeIterator还有nextNode()\previousNode()方法
variterator=document.createNodeIterator(document,NodeFilter.SHOW_ALL,null,false)
eg:variterator=null;
functionmakeList(){
varoDiv=document.getElemenetById("div1");
varoFilter=newObject();
oFilter.acceptNode=function(oNode){//此方法用于过滤掉标签为p的节点
return(oNode.tagName=="p")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT;
}
iterator=document.createNodeIterator(oDiv,NodeFilter.SHOW_ALL,null,false);
while(iterator.nextNode()){
......
}
}
遍历DOM------TreeWalker
TreeWalker还有nextNode()\previousNode()\parentNode()\firstNode()\lastNode()\nestSibling()\previousSibling()方法
variterator=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,false)
eg:variterator=null;
functionmakeList(){
varoDiv=document.getElemenetById("div1");
varoFilter=newObject();
oFilter.acceptNode=function(oNode){//此方法用于过滤掉标签为p的节点
return(oNode.tagName=="p")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT;
}
iterator=document.createTreeWalker(oDiv,NodeFilter.SHOW_ALL,null,false);
while(iterator.nextNode()){
......
}
}