admin管理员组

文章数量:1406950

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.

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.

Share edited Jan 20, 2011 at 11:21 clockworkgeek 37.7k9 gold badges91 silver badges127 bronze badges asked Jan 20, 2011 at 8:29 prasannabogaprasannaboga 1,0141 gold badge14 silver badges39 bronze badges 1
  • Is their is any method in prototypeJs like jQuery text() method. – prasannaboga Commented Jan 20, 2011 at 9:15
Add a ment  | 

2 Answers 2

Reset to default 4

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();

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/e8uFS/1/

本文标签: javascriptHow to get plain text from an element in PrototypeJSStack Overflow