javascript - 想要遍历文档中所有的文本节点,应该有什么样的解决思路?
高洛峰
高洛峰 2017-04-11 12:00:25
[JavaScript讨论组]
var allTextContent = new Array();  //存储所有文本节点的内容
function seachElemAllTextContent(node){
    for(var Pindex = 0 ; Pindex0){
                console.log(allnodeChildren[i]);
                seachElemAllTextContent(allnodeChildren[i]);
            }
            // if((allnodeChildren[i].nodeType==3)&&(/^\s+$/.test(allnodeChildren[i].nodeValue))){
            if((allnodeChildren[i].nodeType==3)&&(allnodeChildren[i].nodeValue!=' ')){
                allTextContent.push(allnodeChildren[i].nodeValue);
            }
        }
    }
    console.log(allTextContent);
}

这是我的解决思路,但是结果不对,请大家提点一下。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
PHP中文网

测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Javascript Test</title>
</head>
<body>
    <p>this is p
        <p>This is paragraph</p>
        <ul>this is ul
            <li>number1</li>
            <li>number2</li>
            <li>number3</li>
            <li>number4</li>
            <li>number5</li>
        </ul>
    </p>
    <script>
        var textArray = new Array();
        function search(element){
            var nodeList = element.childNodes;
            for (var i = 0; i < nodeList.length; i++) {
                    if (nodeList[i].nodeType == Node.TEXT_NODE && nodeList[i].nodeValue.trim() != "") {
                        textArray.push(nodeList[i].nodeValue);
                    } else if (nodeList[i].nodeType == Node.ELEMENT_NODE) {
                        search(nodeList[i]);
                    }
            }
        }
        search(document.body);
        console.log(textArray);
    </script>
</body>
</html>

测试结果:

[object Array]
[
      0: "this is p
        ",
      1: "This is paragraph",
      2: "this is ul
            ",
      3: "number1",
      4: "number2",
      5: "number3",
      6: "number4",
      7: "number5",
      8: "
        var textArray = new Array();
        function search(element){
            var nodeList = element.childNodes;
            for (var i = 0; i < nodeList.length; i++) {
                    if (nodeList[i].nodeType == Node.TEXT_NODE && nodeList[i].nodeValue.trim() != "") {
                        textArray.push(nodeList[i].nodeValue);
                    } else if (nodeList[i].nodeType == Node.ELEMENT_NODE) {
                        search(nodeList[i]);
                    }
            }
        }
        search(document.body);
        console.log(textArray);
    ",
      length: 9
   ]

测试环境:
Windows 7 Ultimate SP1
IE11

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号