跨浏览器问题

我在IE 和FireFox 下测试以下javascript代码 :
[code="java"]
Tab = function(id)
{
var t= this;
t.tabs = {};
t.tabs = document.getElementById(id).childNodes;
for(i = 0 ; i<t.tabs.length;i++)
{
alert(t.tabs[i].id);
}

}
[/code]
出现以下问题:
ie 下 t.tabs[i].id 能够返回结果;
firefox下返回undefined;

请问这是什么原因?怎么解决?

firefox会把把一个标签的结束符“>”到下一个标签的起始符“<”之间的内容(除注释外,包括任何的文字、空格、回车、制表符)也算是一个节点,而且nodeName="#text"。
所以在循环时加上 if(t.tabs[i].nodeName=="#text") continue;就OK了

原因:childNodes在ff等标准浏览器里会返回空文本节点

解决办法:用getElementsByTagName('*')

[code="java"]
Tab = function(id)

{

var t= this;

t.tabs = {};

t.tabs = document.getElementById(id).childNodes;

for(i = 0 ; i<t.tabs.length;i++)

{

if(t.tabs[i].nodeType==1)
alert(t.tabs[i].id);

}

}
[/code]