« 12/24〜12/25にかけての日記 | トップページ | ソニックラッシュをクリア »

2005.12.29

JavaScriptでHTMLタグが含まれた文字列をハイライトする。

cocolog_ajax_search.jsで、検索結果のページで、検索文字列をハイライトするようにしているんですが、今までは単純にreplaceしているだけでした。

replaced_text = text.replace( new RegExp( '(' + keyword + ')', "ig"), '' + "$1" + '' );

しかーし、これだとHTMLタグの内側もガシガシと書き換えてしまうのでよろしくない。
うーむ、どうしたものかということで、次みたいにしてみた。
やっていることは、タグの内側だけ元に戻しているというイメージ。

replaced_text = text.replace( new RegExp( '(' + keyword + ')', "ig"), '' + "$1" + '' );
while( replaced_text.match( new RegExp( '(<[^>]+)(' + keyword + ')(.*?>)', "ig") ) ) {
replaced_text = replaced_text.replace( new RegExp( '(<[^>]+)(' + keyword + ')(.*?>)', "ig"), "$1$2$3" );
}

うわっ、すっげー力業…。
でも、たいていの場合うまくいっているっぽい。
もっとスマートな方法はないものかなぁ。



JavaScriptビジュアル・リファレンス

↓1日1ポチッとをお願いします!励みになります!
ポチっとよろしく!

|

« 12/24〜12/25にかけての日記 | トップページ | ソニックラッシュをクリア »

JavaScript」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22269/7892289

この記事へのトラックバック一覧です: JavaScriptでHTMLタグが含まれた文字列をハイライトする。:

« 12/24〜12/25にかけての日記 | トップページ | ソニックラッシュをクリア »