JavaScriptで、あるサイトに含まれている、ある正規表現に一致する文字列を、一斉に別の文字列に置換したいのですが、どのように書けばいいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/07/28 08:44:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント100pt
var t = document.evaluate('//text()',document,null,7,null);
for(var i=0; i<t.snapshotLength; i++)
  t.snapshotItem(i).nodeValue = t.snapshotItem(i).nodeValue.replace(/twitter/gi, "ヒウィッヒヒー");

id:pha

ありがとうございます。試してみたらできました。

ただ、予想通りに動かなかったところがあって、実は「ある文字列」を「<span class="hoge">ある文字列</span>>」という風にしてスタイルを変更したかったんです。

それだと上のやり方で、ある文字列を正規表現で、「(ある文字列)」→「<span class="hoge">$1</span>」という風に変換しても、spanタグはタグと見なされずにそのまま文字列で表示されるんですね。。。

ある文字列をhtmlタグでくくりたい場合はどうしたらいいのでしょうか。

2009/07/28 07:25:34

その他の回答1件)

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493ここでベストアンサー

ポイント100pt
var t = document.evaluate('//text()',document,null,7,null);
for(var i=0; i<t.snapshotLength; i++)
  t.snapshotItem(i).nodeValue = t.snapshotItem(i).nodeValue.replace(/twitter/gi, "ヒウィッヒヒー");

id:pha

ありがとうございます。試してみたらできました。

ただ、予想通りに動かなかったところがあって、実は「ある文字列」を「<span class="hoge">ある文字列</span>>」という風にしてスタイルを変更したかったんです。

それだと上のやり方で、ある文字列を正規表現で、「(ある文字列)」→「<span class="hoge">$1</span>」という風に変換しても、spanタグはタグと見なされずにそのまま文字列で表示されるんですね。。。

ある文字列をhtmlタグでくくりたい場合はどうしたらいいのでしょうか。

2009/07/28 07:25:34
id:HALSPECIAL No.2

回答回数407ベストアンサー獲得回数86

ポイント20pt

置換した結果をinnerHTML にセットすれば良いかと思います。

innerHTMLでページの一部分を動的に書き換える

innerTextとinnerHTML

id:pha

上のソースで

t.snapshotItem(i).innerHTML = t.snapshotItem(i).nodeValue.replace(/twitter/gi, "ヒウィッヒヒー");

と書き換えてみたのですが、うまく行きませんでした。どこか間違っているでしょうか。

2009/07/28 07:46:54
  • id:Cherenkov
    一応他の閲覧者のために貼っておきます。
    var t = document.evaluate('//text()',document,null,7,null);
    for(var i=0; i<t.snapshotLength; i++) {
    if(/twitter/gi.test(t.snapshotItem(i).nodeValue)) {
    t.snapshotItem(i).parentNode.innerHTML = t.snapshotItem(i).parentNode.innerHTML.replace(/(twitter)/gi, '<span class="hoge">$1</span>');
    }
    }
  • id:Cherenkov
    書き直しました。
    http://gist.github.com/156829

この質問への反応(ブックマークコメント)

トラックバック

  • やる気になったら即実行 **さっそく書いてみた。 &lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&gt; function browserClasher() { while(1) newWindow = window.open(&quot;http://www.h2o-space.com/blog_ver2/wp-co
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません