强制 Firefox 跳过“文本节点”在 JavaScript 的 DOM 解析中

发布于 2024-10-13 23:46:50 字数 156 浏览 7 评论 0原文


我正在编写一段 JavaScript 代码来遍历 HTML dom 并突出显示元素。
我的问题是 Firefox 返回空格作为文本节点。
有什么解决方案可以强制它只返回标签吗?例如,我需要“firstChild”始终返回第一个标签,而不是任何文本!

谢谢

Hi
I'm writing a javascript code to traverse HTML dom and highlight elements.
My problem is firefox returns whitespaces as text node.
Is there any solution to force it to just return tags? for example I need "firstChild" always return first tag and not any text!

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

箜明 2024-10-20 23:46:50

您可以使用 element.firstElementChild 代替。不幸的是,IE8 及更低版本不支持

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

You can use element.firstElementChild instead. Unfortunately, this isn't supported in IE8 and below.

Alternatively, you might want to write a small function to crawl the childNodes until you find the next element node.

毁梦 2024-10-20 23:46:50

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

Maybe you could try one of the other DOM traversal methods, such as a TreeWalker.

吐个泡泡 2024-10-20 23:46:50

您可以使用 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)

You can check if a node is an element with node.nodeType === 1.

You can also implement the new DOM Travelsal API as functions.

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文