2011-01-20 8 views
4

要素からプレーンテキストを取得するにはどうすればよいですか?PrototypeJSの要素からプレーンテキストを取得する方法は?

<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> 

このdivタグからプレーンテキストを取得する方法はありますか?私はプレーンテキストを「これは一行目です。あなたは二行目です」としたいと思います。

$('summary_header').textContentは空白で示します。

+0

jQuery text()メソッドのようなプロトタイプのメソッドです。 – Prasanna

答えて

4

あなたは方法、問題ありませんが必要な場合。それはjavascriptの美しさであり、プロトタイプの継承です。

Prototype.jsを使用すると、新しいメソッドでElementオブジェクトを拡張できます。 ちょうどあなたのスクリプトにこれを追加します。

Element.addMethods({ 
    getText: function(element) { 
     element = $(element); 
     return element.innerHTML.strip().stripTags().replace(/\n/g,' ').replace(/\s+/g,' '); 
    } 
}); 

ほとんど提案@kokoと同じですが、私は1つのスペースに各改行文字\nを変更する代わりに、それらを除去し、連続したwithe-の任意の数を変更することを示唆していますスペース文字をシングルスペースに変換します。これは、ブラウザと同様の動作です。

あなたがその時にスクリプト、prototype.jsの負荷後に、あなたはプレーンテキストを取得するための新しい方法を使用することができます。

するvar平文= $( 'summary_headerを')のgetText();

+0

'strip'を' '/ [\ n \ s] +/g' – clockworkgeek

+0

実際には' \ s'に '\ n 'が含まれていないのですが、 '正規表現で? – clockworkgeek

+0

あなたのコメントはどちらもsesneになります。ありがとう。ココのコードによる多くのインスピレーションに... – SWilk

2

非常に美しいわけではありませんが、機能します。私はあなたが達成しようとしているのか分からないが、そこに行く:

var f = $('summary_header').innerHTML.strip().stripTags().replace(/\n/g,'').replace(/\s{2}/g,''); 

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

+0

プレーンテキストの要素を取得するには、jQueryのtext()のようなメソッドが必要です。 PrototypeJSと同じ方法 – Prasanna

+0

http://www.prototypejs.org/api/string/stripTagsおよびhttp://www.prototypejs.org/api/string/strip – koko

関連する問題