如何获取不带标签的DOM和文本中的所有元素

猫头鹰
var elements = document.body.getElementsByTagName('*');

for(var b = 0; b < elements.length; b++) {
     // Here is DOM elemenets with tags
     // I need to get here DOM elements with HTML tags and DOM elements without HTML tags.
}

我该怎么办?提前致谢。

jsfiddle:http : //jsfiddle.net/Y9B4B/

(vanilla.js)

jfriend00

因此,从您的jsFiddle看来,您想要的是中的文本<body>,而不是其他任何标签中的文本我称之为“顶层文字”。您可以通过遍历body元素的childNode并仅收集文本节点来收集顶级文本节点。另一个标签中的任何文本都将是该标签的子级,而不是正文的直接子级。

function getTopTextNodes() {
    var textNodes = [];
    var topNodes = document.body.childNodes;
    for (var i = 0; i < topNodes.length; i++) {
        if (topNodes[i].nodeType == 3) {
            textNodes.push(topNodes[i]);
        }
    }
    return textNodes;
}

或者,如果您想要文本块:

function getTopText() {
    var text = [];
    var topNodes = document.body.childNodes;
    for (var i = 0; i < topNodes.length; i++) {
        if (topNodes[i].nodeType == 3) {
            text.push(topNodes[i].nodeValue);
        }
    }
    return text;
}

请记住,文档中显示为单个文本的内容可能位于多个相邻的文本节点中。如果要合并来自连续文本节点的文本,可以这样进行:

function getTopTextCombined() {
    var text = [];
    var lastNodeType;
    var topNodes = document.body.childNodes;
    for (var i = 0; i < topNodes.length; i++) {
        if (topNodes[i].nodeType == 3) {
            if (lastNodeType === 3) {
                text[text.length - 1] += topNodes[i].nodeValue;
            } else {
                text.push(topNodes[i].nodeValue);
            }
        }
        lastNodeType = topNodes[i].nodeType;
    }
    return text;
}

请注意,不同的浏览器会将内容放入文本节点的方式略有不同。在Chrome中,您将获得一些文本节点,其中仅包含空格,如果您只想要可见的文本,并且文本中也可能包含\ n个字符,则可能需要忽略它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在特定标签内的xml中获取所有嵌套标签和文本?

来自分类Dev

如何获取选择元素的所有选项的值和文本

来自分类Dev

如何从该标签中获取所有文本?

来自分类Dev

如何将具有不同ID标签和文本的html元素附加到JavaScript中?

来自分类Dev

获取元素 Javascript 中的所有标签

来自分类Dev

如何从一个数组中的所有标签获取所有文本?

来自分类Dev

如何使用XPath从根标签中获取所有不同的元素标签

来自分类Dev

python - 如何使用beautifulsoup在网页中的某个文本之前获取所有<p>标签?

来自分类Dev

如何获取cElementTree中某个元素的所有文本子级?

来自分类Dev

如何按顺序获取所有元素文本

来自分类Dev

jQuery在div中获取所有复选框和文本输入

来自分类Dev

如何从具有带有已知文本的标题标签的Div中获取Table元素-使用Selenium和Java

来自分类Dev

如何在Firefox的所有标签中搜索文本?

来自分类Dev

获取标签中的所有文本,除非它在另一个标签中

来自分类Dev

如何使用Mojolicious从所有DOM元素中删除属性?

来自分类Dev

如何从Excel中的所有行中删除括号和文本

来自分类Dev

如何提取不带/不带文本的HTML标签

来自分类Dev

删除Javascript中具有特定标签名称的所有DOM元素

来自分类Dev

如何使用带有Java的Selenium Webdriver从包含在多个span标签内的span元素中获取实际文本

来自分类Dev

如何在tbody中获取所有标签?

来自分类Dev

如何使用python获取XML中的所有标签?

来自分类Dev

如何遍历DOM并显示所有标签?

来自分类Dev

如何單擊具有類名和文本的 div 中的元素

来自分类Dev

如何在Python中获取当前目录中的所有文件名和文件大小

来自分类Dev

获取所有选择元素选项的文本?

来自分类Dev

从页面获取所有文本元素

来自分类Dev

在 Beautiful Soup 中使用 find_all 找到所有链接和文本后,如何获取您需要的链接和文本

来自分类Dev

如何从WPF中的RichTextBox中获取所有文本

来自分类Dev

vim搜索如何反向搜索所有不带文本的行

Related 相关文章

  1. 1

    如何在特定标签内的xml中获取所有嵌套标签和文本?

  2. 2

    如何获取选择元素的所有选项的值和文本

  3. 3

    如何从该标签中获取所有文本?

  4. 4

    如何将具有不同ID标签和文本的html元素附加到JavaScript中?

  5. 5

    获取元素 Javascript 中的所有标签

  6. 6

    如何从一个数组中的所有标签获取所有文本?

  7. 7

    如何使用XPath从根标签中获取所有不同的元素标签

  8. 8

    python - 如何使用beautifulsoup在网页中的某个文本之前获取所有<p>标签?

  9. 9

    如何获取cElementTree中某个元素的所有文本子级?

  10. 10

    如何按顺序获取所有元素文本

  11. 11

    jQuery在div中获取所有复选框和文本输入

  12. 12

    如何从具有带有已知文本的标题标签的Div中获取Table元素-使用Selenium和Java

  13. 13

    如何在Firefox的所有标签中搜索文本?

  14. 14

    获取标签中的所有文本,除非它在另一个标签中

  15. 15

    如何使用Mojolicious从所有DOM元素中删除属性?

  16. 16

    如何从Excel中的所有行中删除括号和文本

  17. 17

    如何提取不带/不带文本的HTML标签

  18. 18

    删除Javascript中具有特定标签名称的所有DOM元素

  19. 19

    如何使用带有Java的Selenium Webdriver从包含在多个span标签内的span元素中获取实际文本

  20. 20

    如何在tbody中获取所有标签?

  21. 21

    如何使用python获取XML中的所有标签?

  22. 22

    如何遍历DOM并显示所有标签?

  23. 23

    如何單擊具有類名和文本的 div 中的元素

  24. 24

    如何在Python中获取当前目录中的所有文件名和文件大小

  25. 25

    获取所有选择元素选项的文本?

  26. 26

    从页面获取所有文本元素

  27. 27

    在 Beautiful Soup 中使用 find_all 找到所有链接和文本后,如何获取您需要的链接和文本

  28. 28

    如何从WPF中的RichTextBox中获取所有文本

  29. 29

    vim搜索如何反向搜索所有不带文本的行

热门标签

归档