关于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会将元素之间的空白当成文本节点,会将换行也当成一个子节点

原文地址:https://www.cnblogs.com/xiaohui108/p/2582668.html