Reputation: 1014
How can I get plain text from an element?
<div id="summary_header">
<span class="heading" style="margin-left: 210px;">This is first line</span><br/>
<span style="margin-left: 260px;"><b> You are in second line</b></span><br/>
</div>
What's the way to get plain text from this div
tag? I want to get plain text as "This is first line You are in second line".
$('summary_header').textContent
gives with white spaces.
Upvotes: 4
Views: 3921
Reputation: 3466
If you need a method, no problem. That is the beauty of javascript and it's prototypal inheritance.
Prototype.js allows you to extend the Element object with new methods. Just add this to your scripts:
Element.addMethods({
getText: function(element) {
element = $(element);
return element.innerHTML.strip().stripTags().replace(/\n/g,' ').replace(/\s+/g,' ');
}
});
That is almost the same as @koko proposed, but I suggest changing each new line character \n
to one space instead of removing them, and changing any number of consecutive withe-space characters to single space. This is similar behavior to what browsers do.
When you at that to your scripts, after the prototype.js loads, you can use new method to get plain text:
var plainText = $('summary_header').getText();
Upvotes: 4
Reputation: 958
It's not very beautiful, but it works. I don't know what you're trying to achieve, but there you go:
var f = $('summary_header').innerHTML.strip().stripTags().replace(/\n/g,'').replace(/\s{2}/g,'');
Upvotes: 2