prasannaboga
prasannaboga

Reputation: 1014

How to get plain text from an element in PrototypeJS?

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

Answers (2)

SWilk
SWilk

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

koko
koko

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,'');

http://jsfiddle.net/e8uFS/1/

Upvotes: 2

Related Questions