Node类型:javascript 所有节点均继承于此。
nodeType:
Node.ELEMENT_NODE(1) //fruquently used Node.ATTRIBUTE_NODE(2) Node.TEXT_NODE(3) //fruquently used Node.CDATA_SECTION_NODE(4) Node.ENTITY_PREFERENCE_NODE(5) Node.ENTITY_NODE(6) Node.PROCESSING_INSTRUCTION_NODE(7) Node.COMMENT_NODE(8) Node.DOCUMENT_NODE(9) Node.DOCUMENT_TYPE_NODE(10) Node.DOCUMENT_FRAGMENT_NODE(11) Node.NOTATION_NODE(12)
1.nodeName && nodeValue
对于元素节点,nodeName保持标签名,nodeValue = null
2.节点关系:
每个节点都有一个childNodes,保存着一个NodeList对象
可以使用方括号[index]或item(index)访问
function convertToArray(nodes){ var array = null; try{ array = Array.prototype.slice.call(nodes,0);// if IE } catch(ex){ array = new Array(); for(var i=0,len = nodes.length;i < len;i++){ array.push(nodes[i]) } } return array; }
hasChildNodes() //return bool,是否有子节点 ownerDocument //整个文档的文档节点 parentNode previousSibling nextSibling childNodes:firstChild,lastChild
3.操作节点:
appendChild() //insert to the end var returnNode = someNode.appendChild(newNode); alert(returnNode == newNode) //true alert(someNode.lastChild == newNode) //true var returnNode = someNode.appendChild(someNode.firstChild); alert(returnNode == someNode.lastNode) //ture alert(returnNode == someNode.firstNode)//false
insertBefore() 1:insertNode 2.referenceNode//insert before someNode var returnNode = someNode.insertBefore(newNode,null) alert(returnNode == someNode.lastChild)//true returnNode = someNode.insertBefore(newNode,someNode.firstChild); alert(returnNode == someNode.firstNode);//true
//the 2 function remove node but still in document without place replaceNode() 1:insertNode 2:tobeReplaceOne removeNode() 1:removeNode return the removeNode cloneNode() 1:bool<true:deep copy = all the node tree; false: shallow copy = just copy the node,the return one without place,need appendNode to fix on the tree> normalize() //处理文档树中的文本节点,删除空文本或合并两个临近文本
Documents类型:在浏览器中,Documents对象是HTMLDocument(继承自Document类型)的一个实例,表示整个HTML页面。而且document对象是window对象的一个属性,因此可以作为全局对象来访问。
//1.nodeType == 9 //2.nodeName == "#document" //3.nodeValue == null //4.parentNode == null //5.ownerDocument == null //6.其子节点可能是一个DocumentType(最多一个),Element(最多一个),ProcessingInstruction or Comment. 1.documentElement属性,始终指向HTML页面的<html>元素。var html = document.documentElement; //另一个是通过childNode访问文档元素。 2.body属性指向body属性, var body = document.body; 3.document另一个可能属性,DocumentType。var doctype = document.doctype;取得<!DOCTYPE>的引用。不同浏览器解析不同。 4.title文档标题:var title = document.title; document.title = "new one"; 5.URL: var url = document.URL;//取得完整URL 6.domain: var domain = document.domain;//取得域名 7.referrer:var referrer = document.referrer;//取得来源页面的url 8.getElementById() //返回第一个找到的id 9.getElementByTagName()//返回HTMLCollection HTMLCollection,访问[],item(),存在length,namedItem(“name"),通过name属性取得的元素。还可以按名称索引. var images = document.getElementByTagName("img") var myImg = images["myImage"],后台调用namedItem("myImage"); "*"在javascript 和CSS都表示所有文件。var allElements = document.getElementByTagName("*"); 10.getElementByNames() HTMLDocument特有属性,过滤name属性。 var radios = document.getElementByName("color") //返回HTMLCollection 如果应用namedItem()只返回第一个属性项 11.特殊集合: document.anchor //包含文档中所有包含name属性的<a>标签。 document.forms //包含文档中所有的<form>元素. document.images //包含文档中所有<img>元素 document.links //包含文档中所有带href属性的<a>元素。
DOM一致性检查:
document.implementation 规定一个方法,hasFeature()1:DOM功能的名称2:版本 var hasXMLDom = document.implementation.hasFeature("XML","1.0") //有时让返回true比较容易,所有要进行能力检测 write() writeln()
Element类型:
1.nodeType == 1 2.nodeName == "标签名" 3.nodeValue == null 4.parentNode == Document or Element 5.childNode == Element/Text/Comment/ProcessingInstruction/CDATASection/EntityReference. //要访问元素的标签名,可以使用nodeName or tagName var div = document.getElementById("myDiv") alert(div.tagName == div.nodeName) //true //返回的标签名在HTML中是大写,而XML会与源码保持一致 if (element.tagName.toLowerCase() == "div"){}//可以用于所有文档
HTML元素:都是由HTMLElement表示。
1.id 2.title 3.lang: use less 4.dir: use less 5.className :元素指定的CSS类。 6.attributes //包含一个NamedNodeMap,"动态"集合 a.getNamedItem(name):返回nodeName属性等于name的节点 b.removedNamedItem(name):从列表中移除nodeName属性等于name的节点 c.setNamedItem(name):向列表中添加节点,以节点的nodeName属性为索引。 d.item(pos):返回数字pos处的节点 attributes属性包含一系列节点,每个节点的nodeName就是特性的名称,而节点的nodeValue就是属性的值。 var id = element.attributes.getNamedItem("id").nodeValue; var id = element.attributes["id"].nodeValue; element.attributes["id"].nodeValue = "some" removeNamedItem()和removeAttribute()功能一样,但是前者返回删除的节点 //取得属性: 1.getAttribute()//必须与元素的特性名相同作为传入参数,比如class,实际属性className,如果没有这个属性,返回null 2.setAttribute() 3.removeAttribute() 4.attributes 5.createElement() var div = document.createElement("div")