DOM

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")


你可能感兴趣的:(dom)