DOM节点类型说明

万维网联盟(W3C)定义HTML DOM 标准节点有以下几种 ()

类型 说明
ELEMENT_NODE 1 元素节点 *
ATTRIBUTE_NODE 2 属性节点 *
TEXT_NODE 3 文本节点 *
CDATA_SECTION_NODE 4 CDATA 区段
ENTITY_REFERENCE_NODE 5 实体引用
ENTITY_NODE 6 实体
PROCESSING_INSTRUCTION_NODE 7 处理指令
COMMENT_NODE 8 注释节点 *
DOCUMENT_NODE 9 文档节点 *

注: * 表示常用

IE与FF 对 以上节点的 “理解” 有差异,如比我们写js : 对象.nextSibling , 来取得对象的下一个兄弟节点,
在IE中,只会取ELEMENT_NODE (元素节点), 忽略其它类型节点.
FF会取得上面各种类型节点.
如:


<table>  
  <tr  id="nst"><td></td></tr>(这里有换行,就是一个文本节点)  
  <tr><td></td></tr>  
</table> 
<!-- lang: js -->
var o=$('nst');  
var next=o.nextSibling;  

结果:
IE中:next 是元素节点 (第二个)
FF中:next 是文本节点 (那个换行)
解决办法: 在base.js中有如下方法: 通过判断 nodeType == 1 来解决问题

<!-- lang: js -->
// 获得下一个元素对象(nodeType=1)
function $NE(e)
{
    e = e.nextSibling;
    while (e && e.nodeType != 1){e = e.nextSibling;}
    return e;
}
// 获得第一个元素对象(nodeType=1)
function $FE(e)
{
    e = e.firstChild;
    while (e && e.nodeType != 1){e = e.nextSibling;}
    return e;
}

你可能感兴趣的:(dom,javascrip)