ehaydenr
ehaydenr

Reputation: 240

Reading Text Between Tags

I am trying to parse some poorly written HTML that follow the below structure.

<div>
   <span>stuff</span>
   Lets just put text here
   <span>more stuff</span>
   And here too!!!
   <span id="cool">even more stuff</span>
</div>

Essentially, text is between pairs of tags. I am trying to ONLY get the "Lets just put text here" and "And here too!!!" text with JavaScript. Suggestions?

Thanks.

Upvotes: 2

Views: 442

Answers (1)

dfsq
dfsq

Reputation: 193301

I would use convenient array methods: Array.prototype.filter - to get text nodes only, and Array.prototype.map to get text values from those nodes:

var div = document.querySelector('div');

var textNodes = [].slice.call(div.childNodes).filter(function(el) {
    return el.nodeType === 3 && el.nodeValue.trim();
});

var text = textNodes.map(function(node) {
    return node.nodeValue.trim();
});

alert("Text #1: " + text[0] + "\nText #2: " + text[1]);
<div>
   <span>stuff</span>
   Lets just put text here
   <span>more stuff</span>
   And here too!!!
   <span id="cool">even more stuff</span>
</div>

Upvotes: 2

Related Questions