JavaScript: get the text of a DOM element with mixed content

by gabrieleromanato

HTML

<p id="test">Lorem ipsum dolor <strong>sit</strong> amet et ideo autem <em>aquis</em> huius mundi...</p>

JavaScript

function getText(element) {
    element = document.getElementById(element);
    var children = element.childNodes,
        len = children.length,
        i, textNodes = [];
    for (i = 0; i < len; i++) {
        var node = children[i];
        var text = '';
        if (node.nodeType == 3) {
            text = node.nodeValue;
        } else if (node.nodeType == 1) {
            text = node.firstChild.nodeValue;
        }

        textNodes.push(text);


    }

    return textNodes.join(' ');

}

alert(getText('test'));