人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascript:配列を元に全て置換・マークアップをしたいのですが、無理なんでしょうか。

function marker(){
word = new Array("たる", "をかし");
input= document.form1.ta.value;
for (var i=0; i<=word.length; i++ )
{
input = input.replace(/word[i]/g ,'<span class=check1>'+ word[i] +'</span>');
}
}
のようにして配列の単語を全てマークアップしようとしたのですが、置換されません。
こんなです。 http://www.lawdata.org/etc/hairetsuchikan.htm
「/word[i]/g」を「word[i]」にすると最初の一つずつだけマークアップされます。
これは無理なんでしょうか?

●質問者: nagahito
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript TA Word をかし マークアップ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ardarim
●300ポイント

これでどうでしょうか。

 re = new RegExp(String(word[i]),"g");
 input = input.replace(re,'<span class=check1>'+ word[i] +'</span>'); 
◎質問者からの返答

ありがとうございます。


2 ● tikirou
●300ポイント

for分の中を以下のように変更するとうまく動作します。

ご確認下さい。

reg = new RegExp(word[i],"g");

input = input.replace(reg,''+ word[i] +'');

◎質問者からの返答

ありがとうございます。

こういう知識はどこで身につければいいんでしょうか・・・


3 ● susie-t
●320ポイント ベストアンサー

既出かもしれませんが・・・。

input = input.replace(new RegExp('(' + word[i] + ')', 'g') ,'<span class=check1>$1</span>'); 

でどうでしょうか。

「/?/g」の間に書くのは実際の文字なので、このままだと「wordi」という文字を置換しようとします([]はまた別の意味を持つ)。変数内の文字を使用したい場合は、上のように「new RegExp(変数,'g')」等とします。

()で括った中の文字は、置換文字側で$1等で参照できます。・・・あ、ここはもとのままでもいいですが^^;

参考になれば幸いです。

◎質問者からの返答

丁寧にありがとうございます。

どうしたらこういうことを人に聞かなくてもわかるようになれるんでしょうか・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ