- ベストアンサー
JavaScript置換について
- JavaScriptでイベント属性のみを置換する方法について
- 特定の属性を別の属性に置換する方法について
- JavaScriptのreplaceメソッドを使用して置換する方法について
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
やろうとなさっていることがうまく動作しない直接の原因は文字列にしていないから。 onmouseover → "onmouseover" onclick → "onclick" では? ただし、全ての文字列 "onmouseover" に対して置き換えが起こるので注意が必要。(意味を解釈しないで置き換えられます) そういった意味からも、ANo2様の方法のほうが良さそう。 さらには、 >・文章内容を定期的に変更するページなので、 >2つページを作成すると、 >どちらも書き換えが必要な為、 「文章内容を変更すること」=「構成が変わること」になるのでしょうから、スクリプトだけ別の修正の仕方を考える方が、実は不自然に感じられます。 どのような処理の可能性が存在するのかよくわかりませんが、いくつかのパターンに分けられるのであれば、例えばclass設定を変えればそれに応じた処理がされるようなスクリプトにしておけば、いちいちスクリプトの処理を置換えたりすることなく、文章の変更作業を行なうだけで終わりにできるかと思います。 イベントの種類ごと変えたいなどであるのならば、ドキュメントレベルでmouseover/out、clickなどを監視するようにしておけばよろしいかと。
その他の回答 (3)
- teketon
- ベストアンサー率65% (141/215)
なぜ動的に修正するのか?ページ数が多いからなどではなく、他の明示的な理由がないのでしたら、 元のHTMLをエディタ等の置換機能で修正するべきだと思います。
お礼
ありがとうございました。 解決できました。
補足
回答ありがとうございます。 わかりにくくて申し訳ありません。 ■動的に表示させる理由について ・文章内容を定期的に変更するページなので、 2つページを作成すると、 どちらも書き換えが必要な為、 1つのhtmlで作成できないか?との事です。 個別ページA_表示方法1のhtml 個別ページA_表示方法2のhtml という風に、 2ページにしたくないということです。 ■今までの経緯 1.もともと onmouseoverした時に、overという関数で表示させるというように、個別ページが作成されていました。(表示方法1) 2.トップページにボタンを作成し、表示方法(表示方法2)を追加したいという要求がありました。 (表示方法2)は、onmouseoverした時にtopという関数で表示するものでした。 3.トップページのボタンにフラグを作成し、POPという関数で動作を振り分けた。 4.(表示方法2)を、onmouseoverからonClick、に変更して欲しいという要求があった。←イマココ よろしくお願いいたします。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
http://okwave.jp/qa/q7827495.html この辺の回答を参考にしてみてください。(ということがしたいってことで、いいですかね?) onmouseover、onmouseoutにnullを代入すれば、それらのイベントは実行されなくなります。
お礼
ありがとうございました。 解決できました。
補足
回答ありがとうございます! 参考にさせていただきます。 「 onmouseover="POP('ここに表示さ せる文章がはいってます')"」を退避させておいて、 detachEventでイベントを消して attachEventでイベント追加の様な感じで試してみようと思います。
質問が理解できない。ストリングだから置換できないと思っている理由もよくわからない。何のエディターでどのコマンドを使ってリプレースしたの?
お礼
ありがとうございました。 解決できました。
補足
回答ありがとうございます。 わかりにくくて申し訳ありません。 ■やりたいこと htmlのソースを動的に置換したい タグの中のonmouseoverをonclickに動的に置換したい が適切だったかもしれません。 エディター上の置換機能の質問ではありませんでした。 安直に置換→replaceだ!と思ってhtml読み込んだ時に body内を書き換えるという動作させてみようと思いました。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>sanmple</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> <link rel="stylesheet" type="text/css" href="../../../css/left.css"> <script src="../../../../JS/jquery.js" type="text/javascript"></script> <script src="../../../../JS/jquery.cookie.js" type="text/javascript"></script> $(document).ready(function(){ alert(document.body.innerHTML); document.body.innerHTML=document.body.innerHTML.replace(onmouseover,onclick); alert(document.body.innerHTML); }); </head> <body> <map name="ima"> <area shape="rect" coords="10,20,82,156" onmouseover="POP('ここに表示さ せる文章がはいってます')" onmouseout="return NNN()"> <area shape="rect" coords="10,30,100,200" onmouseover="POP('いいいいいい いいいいいいいい')" onmouseout="return NNN()"> </map> </body> </html> onmouseoverがonclickに置換されなかったので、 ためしに $(document).ready(function(){ alert(document.body.innerHTML); document.body.innerHTML=document.body.innerHTML.replace("文章","ぶんしょう"); }); と書くと置換されたので、onmouseoverはタグの中だから置換できないのかな?イベント属性はstringじゃないのかな?stringでないとreplace置換できないのかな?というような疑問を持ちました。 よろしくお願いいたします。
お礼
回答ありがとうございました。 解決できました。