- ベストアンサー
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> よろしくお願いいたします。
- みんなの回答 (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,'置換後'); で、一発だけど・・・。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
こういうことじゃないですか? <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>
お礼
このようなやり方もあるのですね。 本当に勉強になります。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
簡単に特定できる目印を付けてあればもっと簡単ですが、 リンク(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="置換後"; } } } };
お礼
私の説明不足だったのですが、アンカーのURLはダミーとしていれたもので、それ自体は無関係なものでした。 でも、URLを指定した場合にはこのような使い方もできるんだなと参考になりました。 ありがとうございました。
お礼
試したところうまくいきました。 document.getElementById('xxx').innerHTML.replace(/置換前/g,'置換後'); という方法もありますね。う~ん、奥が深いです。 ありがとうございました。