关于DOM一些小常识
nodeName,nodeValue,nodeType的区别
nodeName表示节点的名称:
元素节点的nodeName返回的是标签名称(大写,例:DIV)//$('id').nodeName
属性节点的nodeName返回的是属性名称//$('id').getNamedItem('id').nodeName
文本节点的nodeName返回的是#text
文档节点的nodeName返回的是#document
nodeValue表示节点的值
元素节点的nodeValue返回的是null
属性节点的nodeValue返回的是属性值
文本节点的nodeValue返回的是这段文本
文档节点的nodeValue返回的是null
nodeType表示节点的类型
元素-->1
属性-->2
文本-->3
cdata-->4
comment-->8
document-->9
documentType-->10
documentFragment-->11
获取某个元素下面的第一个子节点:
var id = $('id')
firstChild(id)
function firstChild(elem){
do{
elem = elem.firstChild
}while(elem && elem.nodeType != 1)
return elem
}
获取某个元素的下个兄弟节点
function next(elem){
do{
elem = elem.nextSibling
}while(elem && elem.nodeType != 1)
return elem
}
第几层级的父节点
function parent(elem,num){
var num = num || 1
for(var i = 0; i < num; i++){
if(elem) elem = elem.parentNode
}
return elem
}
因为FF会将元素之间的空白当成文本节点,会将换行也当成一个子节点