Есть ли возможность получить все элементы содержимого HTML, которые содержат «простые» текстовые значения из документа HTML, используя JavaScript? - PullRequest
0 голосов
/ 27 февраля 2012

Есть ли возможность получить все элементы содержимого HTML, которые содержат "простые" текстовые значения из документа HTML, используя JavaScript?

Например:

<html>
    <body>
        <div>
            Text1
            <p>
                Text2
            </p>
        </div>
    </body>
</html>

Я хочу получить Text1 и Text2.

1 Ответ

4 голосов
/ 27 февраля 2012

Конечно, вы можете просто перебирать узлы DOM:

function getTextNodes(node) {
    var result = [];
    for(var child = node.firstChild; child; child = child.nextSibling) {
        if(child.nodeType === 3) { // text node
            result.push(child);
        }
        else if(child.nodeType === 1) { // element node
            result = result.concat(getTextNodes(child));
        }
    }
    return result;
}

var textNodes = getTextNodes(document.body);

Это рекурсивный подход, вы также можете сначала выбрать все узлы элемента, а затем получить их дочерние текстовые узлы.

Возможно, вы также хотите отфильтровать текстовые узлы, содержащие только пробелы.

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...