2011-01-25 37 views
0


我正在写一个JavaScript代码来遍历HTML DOM和高亮显示元素。
我的问题是Firefox作为文本节点返回whitespaces。
有没有解决方案强制它返回标签?例如我需要“firstChild”总是返回第一个标签,而不是任何文本!强制firefox跳过DOM中的文本节点解析通过javascript

谢谢

回答

3

您可以检查节点是否为元素node.nodeType === 1

您也可以实现新的DOM Travelsal API作为函数。

var dummy = document.createElement("div"); 
var firstElementChild = ('firstElementChild' in dummy) 
    ? function (el) { 
     return el.firstElementChild; 
    } 
    : function (el) { 
     el = el.firstChild; 
     while (el && el.nodeType !== 1) 
      el = el.nextSibling; 
     return el; 
    } 

usage

firstElementChild(el) 
+1

`if`有什么问题? – ircmaxell 2011-01-25 12:03:50

3

您可以使用element.firstElementChild来代替。不幸的是,这个在IE8及以下版本中为isn't supported

或者,您可能希望编写一个小函数来抓取childNode,直到找到下一个element节点。

1

也许你可以试试其他DOM遍历方法之一,如TreeWalker