嗨
我正在写一个JavaScript代码来遍历HTML DOM和高亮显示元素。
我的问题是Firefox作为文本节点返回whitespaces。
有没有解决方案强制它返回标签?例如我需要“firstChild”总是返回第一个标签,而不是任何文本!强制firefox跳过DOM中的文本节点解析通过javascript
谢谢
嗨
我正在写一个JavaScript代码来遍历HTML DOM和高亮显示元素。
我的问题是Firefox作为文本节点返回whitespaces。
有没有解决方案强制它返回标签?例如我需要“firstChild”总是返回第一个标签,而不是任何文本!强制firefox跳过DOM中的文本节点解析通过javascript
谢谢
您可以检查节点是否为元素与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;
}
firstElementChild(el)
您可以使用element.firstElementChild
来代替。不幸的是,这个在IE8及以下版本中为isn't supported。
或者,您可能希望编写一个小函数来抓取childNode
,直到找到下一个element
节点。
也许你可以试试其他DOM遍历方法之一,如TreeWalker。
`if`有什么问题? – ircmaxell 2011-01-25 12:03:50