• ベストアンサー

javascriptを使ったページ内の特定文字の置き換え

ブラウザーにページを表示させたときに一部の特定の文字だけを違った文字に置き換えたいと思っています。 ページ全体の該当文字ならば、 <script type="text/javascript"> <!-- document.body.innerHTML=document.body.innerHTML.replace(/置換前/g,'置換後');focus(); // --> </script> でページ全体の文字が置換できるのですが、下のケースのように一部の場所(DIV内)の場合はどのようにすればよろしいのでしょうか。 <html> ・ ・ <div class="sample"> <a href="hogehoge">置換前</a> </div> ・ ・ </html> よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • NTJ
  • ベストアンサー率44% (46/103)
回答No.3

ターゲットが<div>に限られるなら・・・ var allTags = document.getElementsByTagName('div'); for (var i=0;i<allTags.length;i++){ if(allTags[i].className=="sample"){ allTags[i].innerHTML=allTags[i].innerHTML.replace(/置換前/g,'置換後'); } } でいいんじゃ、じゃないかしらん?? div に idプロパティが付いていれば、 document.getElementById('xxx').innerHTML.replace(/置換前/g,'置換後'); で、一発だけど・・・。

mee_me
質問者

お礼

試したところうまくいきました。 document.getElementById('xxx').innerHTML.replace(/置換前/g,'置換後'); という方法もありますね。う~ん、奥が深いです。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こういうことじゃないですか? <a href="hogehoge">置換前</a> <div class="sample"> <a href="hogehoge">置換前</a> </div> <a href="hogehoge">置換前</a> <script language="javascript"> var allTags = document.getElementsByTagName('*'); for (var i =0;i<allTags.length;i++){ if(allTags[i].className=="sample"){ allTags[i].innerHTML=allTags[i].innerHTML.replace(/置換前/g,'置換後'); } } <!-- // --> </script>

mee_me
質問者

お礼

このようなやり方もあるのですね。 本当に勉強になります。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

簡単に特定できる目印を付けてあればもっと簡単ですが、 リンク(href)がhogehoge で親エレメントがclass="sample" のDIV であるリンクということで、 こんな感じでしょうか・ ---------------------------------------------------------------- window.onload=function(){ var aTags = document.getElementsByTagName('a'); var path = location.href.substring(0,location.href.lastIndexOf('/')+1); for(var i=0;i<aTags.length;i++){ var parentEl = aTags[i].parentNode; if(parentEl.tagName=='DIV' && parentEl.className=='sample'){ if(aTags[i].href==path+"hogehoge" && aTags[i].innerHTML=="置換前"){ aTags[i].innerHTML="置換後"; } } } };

mee_me
質問者

お礼

私の説明不足だったのですが、アンカーのURLはダミーとしていれたもので、それ自体は無関係なものでした。 でも、URLを指定した場合にはこのような使い方もできるんだなと参考になりました。 ありがとうございました。

関連するQ&A