$という文字が使えない?

このQ&Aのポイント
  • フレームを使用したページで、左側フレームの文字をクリックすると、右側フレームの特定の文字が強調表示される、というJSがあります。
  • mojiをクリックすると右フレームにあるmojiという文字がすべて強調されます。
  • $を使った文字を強調させたい場合にはどのようにしたらいいでしょうか。
回答を見る
  • ベストアンサー

$という文字が使えない?

フレームを使用したページで、左側フレームの文字をクリックすると、右側フレームの特定の文字が強調表示される、というJSがあります。 だいぶ以前にどこかで教えていただいたものですが、 <script language="javascript"> <!-- function change(str){ var re= new RegExp(str,"g"); var b=parent.right.document.getElementById('rbody'); var ss=b.innerHTML; b.innerHTML= ss.replace(re,"<strong>"+str+"</strong>") } //--> </script> このようにhead部分に記述しておき、文中に <a href="#koko" onclick="change(this.innerHTML)">moji</a> とします。 このmojiをクリックすると右フレームにあるmojiという文字がすべて強調されます。 ところが、$mojiとすると、右フレームの$mojiという文字が強調表示しなくなります。 原因は$という文字がJSで特殊文字だからのような気がするのですが、上記のような$を使った文字を強調させたい場合にはどのようにしたらいいでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

ANo1です。 意味を勘違いなさっているようです。 スクリプト内でエスケープしてください。 特定の文字($など)がstr内にある場合に、エスケープ文字に置き換えてあげるようにしておけばよいでしょう。 ([$]などに替えるほうが簡単かも)

nyakuma
質問者

お礼

お礼が遅くなってすみません。 ありがとうございます。 なんとなく見えてきました。 チャレンジしてみます。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

検索に正規表現を利用しているので、文末の$と解釈されているからおかしくなるのでは? ($mojiでどういう意味になるかわからないけど) 試して見たところ、単純に$をエスケープしてあげれば、きちんと動作するようになります。 といっても、正規表現で用いられる他の文字でも、同様のことが起こることが予想されるので、「$」だけじゃないと思うけど。

nyakuma
質問者

補足

ありがとうございます。説明不足ですみません。 \$mojiとすると、HTMLの <a href="#koko" onclick="change(this.innerHTML)">\$moji</a> となり、\マークまでリンクに表示されてしまいます。 これは避けたいのです。

関連するQ&A

  • ハイライト表示が消えてしまう

    フレームを使って、右側のリンクリスト(right.html)をクリックした際に、左側に表示されたHTMLの文言をハイライト表示させたいと思っています ある程度は出来てきたのですが、一瞬ハイライトしてすぐに消えてしまうのです・・・ どなたかお助けして頂けませんでしょうか 宜しくお願い致します ~index.html~ <head> <meta content="text/html; charset=Shift-JIS" http-equiv="content-type"> <title>ハイライト表示</title> </head> <frameset cols="1031,*" frameborder="no" border="0" framespcing="0"> <frame src="#" scrolling="yes" id="left" name="left"> <frame src="right.html" scrolling="yes" id="right" name="right" noresize="noresize"> </frameset> <body> </body> </html> ~right.html~ <head> <meta content="text/html; charset=Shift-JIS" http-equiv="content-type"> <script language="javascript"> <!-- function change(str,url){ parent.left.location.href=url;  var re=new RegExp(str,"g"); var b=parent.left.document.body; var ss=b.innerHTML; b.innerHTML= ss.replace(re,"<span style=\"background:#77ff77;font-weight:bold\">"+str+"</span>"); } //--> </script> </head> <body> <ls><a href="#" onclick="change('建物','left_1.html')">left_1.html</a></ls> <ls><a href="#" onclick="change('建物','left_2.html')">left_2.html</a></ls> <ls><a href="#" onclick="change('建物','left_3.html')">left_3.html</a></ls> </body> </html> ちなみにleft_1.html等のリンク先のHTMLは修正する事が出来ません 何卒宜しくお願い致します

  • JavaScriptが文字化けする

    JavaScriptファイルをSJIS、EUC、UTF8を統一したために スクリプト上で var str = "あいうえー"; をUTF16で var str = "\u3042\u3044\u3046\u3048\u30fc"; このように変換をしましたが alert("\u3402");とかですと、文字化けはしないのですが、 innerhtml="\u3402"; のようにやると、文字化けをしてしまいます。 どのようにしたら対処できますでしょうか? もし、対処方法なければ、仕方ないので、コード判別をできるようにと考えています。

  • ハイライト表示(タグの中を除きたい)

    HTMLの特定文言をハイライト表示をする為に下記のような感じでjavascriptを組んだのですが、altの中身までreplaceしてしまい、altの中に文言があるとHTMLの形が崩れて画像も表示されなくなってしまいます これをなんとかしたいのですが、タグの中を置換しない方法はありますでしょうか もしくは下記の方法でなく「これならタグの中身を抜かしてハイライト出来る」という物はありませんでしょうか 何卒宜しくお願い致します ~現在の方法は以下~ 親(~index.html~) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "​http://www.w3.org/TR/html4/frameset.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ lang="ja-JP"> <head> <title>ハイライト表示</title> <script type="text/javascript" charset="utf-8"> <!-- var str; function left_load(){ if(str){ var re=new RegExp(str,"g"); var b=left.document.body; var ss=b.innerHTML; b.innerHTML= ss.replace(re,"<span style=\"background:#77ff77;font-weight:bold\">"+str+"</span>"); } } // --> </script> </head> <frameset cols="1031,*" frameborder="no" border="0" framespcing="0"> <frame src="about:blank" onload="left_load();" scrolling="yes" id="left" name="left"> <frame src="right.html" scrolling="yes" id="right" name="right" noresize="noresize"> </frameset> </html> ~right.html~ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "​http://www.w3.org/TR/html4/frameset.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ lang="ja-JP"> <head> <title>ハイライト表示選択</title> <script type="text/javascript" charset="utf-8"> <!-- function change(str,url){ parent.str = str; parent.left.location.href=url; } // --> </script> </head> <body> <ol> <li><a href="#" onclick="change('建物','left_1.html')">left_1.html</a></li> <li><a href="#" onclick="change('建物','left_2.html')">left_2.html</a></li> <li><a href="#" onclick="change('建物','left_3.html')">left_3.html</a></li> </ol> </body> </html>

  • ボタンに書かれている文字の入れ替え

    2つのボタンのどちらを押しても、ボタンに書かれているアルファベットが入れ替わるようにしたいのですが、うまくいきません。 alert(obj1)、alert(obj2)などとして、A,Bともに読み込まれているようなのですが、alert(tmp)の時はundefinedがでます。 どこが間違っているのかよろしければ教えてください。 <!doctype html> <html> <head> <meta charset="utf-8"> <title>勉強中</title> </head> <body> <script> function change_alphabet() { var tmp; var obj1 = document.getElementById("button_1").value; var obj2 = document.getElementById("button_2").value; // alert(obj1); // alert(obj2); tmp = obj1.innerHTML; // alert(tmp); obj1.innerHTML = obj2.innerHTML; obj2.innerHTML = tmp; // alert(obj2); } </script> < input type = "button" id = "button_1" value = "A" style = "width: 25px; height: 25px" onclick = "change_alphabet()" > < input type = "button" id = "button_2" value = "B" style = "width: 25px; height: 25px" onclick = "change_alphabet()" > <body> </html>

  • ハイライト表示をしたい

    2度目の投稿(前回の投稿 http://oshiete1.goo.ne.jp/qa5506744.html)になりますが、指定の文言を色を変えて目立つように(以下ハイライト表示)させたいと思っています 最初に作った物はタグの中(altの中)まで置換をしてしまい、HTMLがくずれるという始末・・・ そこでこのサイトで質問した所、以下のスクリプトを教えて頂きました ところがfirefoxだと動くのですが、IE(IE6しか入っていない環境で使いたい)では動きません 色々調べたところ「フレーム越しの要素コピーは,FFではできて,IEではできないらしい」というのが原因じゃないかという所まで辿り着きました まだjavascript初心者で勉強中な為、教えて頂いたスクリプトも全部理解している訳ではありませんが、どなたか解決方法を教えて頂けないでしょうか 何卒宜しくお願い致します 以下教えて頂いたスクリプト <!-- var str; function left_load(){ if(str){ search(left.document.getElementsByTagName("body")); } } function search(elm){ for(var i=elm.length-1;i>=0;i--){ if(elm[i].nodeName=="#text"){ var re=new RegExp(str,"g"); var ss=elm[i].nodeValue; var result = elm[i].nodeValue.indexOf(str); if(result>=0){ var result_str=ss.replace(re,"<span style=\"background:#77ff77;font-weight:bold\">"+str+"</span>"); var newElement = document.createElement("span"); newElement.innerHTML = result_str; elm[i].parentNode.replaceChild(newElement,elm[i]); } }else{ if(elm[i].hasChildNodes()){ search(elm[i].childNodes); } } } } // --> </script>

  • TEXTAREA内の改行位置をinnerHTMLで反映させたい

    例えば、 <HTML> <HEAD> <SCRIPT> function send(){ var message = f1.message.value var str = '<HTML>\n<HEAD>\n</HEAD>\n<BODY>\n' str += ''+ message +'\n' str += '</BODY>\n</HTML>' document.frame1.document.body.document.body.innerHTML = str } </SCRIPT> </HEAD> <BODY> <FORM name="f1"> <TEXTAREA rows="10" cols="40" name="message" onChange="send()"></TEXTAREA> </FORM> <IFRAME name="frame1" id="frame1" width="90%" height="350"></IFRAME> </BODY> </HTML> このような記述をして、テキストエリア内に文字を数行にわたって書き込んでも改行はされません。 どのようにすれば改行されるようになりますか? innerHTMLのところをinnerTEXTとして改行位置に<BR>タグが入るようにするのでもかまわないのですが、、、 どなたかお分かりになる方、ご教授願います。

  • Javascriptで文字の書き換え

    現在、IE8とChromeを使用しています。 どちらのブラウザで試してもdocument.write("文");は読み込みますが <id>で指定したタグの中身が変わりません。 javascriptに書いたinnerHTML及びinnerTextの使い方か、もしくは、 根本的なところを何処か間違っているでしょうか? -----------HTML文------------------------------------------------------ <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>2011_09_02_1</title> <link rel="stylesheet" href="2011_09_02_1.css"> <script type="text/javascript" src="2011_09_02_1.js"></script> <body> <div id="str"><h3>Good morning</h3></div> </body> </html> ---------------外部CSS文----------------------------------------------- div h3{ color:#0000ff; } ---------------外部javascript文------------------------------------------ //タグを含む書き換え用ソース document.write("読み込むかテスト"); var chenge; chenge = document.getElementById(str); chenge.innerHTML = "Good Night"; ---------------------------------------------------------- //下は後から試した文--------文字のみ書き換え用ソース document.write("読み込むかテスト"); //document.getElementById("str").innerText = "Good Night"; --------------------------------------------------------------------------

  • PHP内でのHTMLデザイン装飾

    お世話になります。PHPで書いています。 $str_messageの文字列を強調かつ赤色にしたく、 echo '<strong style="color:red">'.$str_message.'</strong>'; echo 'にてご予約をお取りします。'; 上記のスクリプトを書いて、実行するとstrong装飾とredでの装飾が下段の 「にてご予約をお取りします。」 まで、かかってきてしまいます。 どこか間違いがあるのか分からず、 分かる方に教えて頂きたくお願い致します。

    • ベストアンサー
    • PHP
  • getChildByNameの引数を動的にしたいです。

    キーボードをタイプしてウインドウ上に表示させる処理をしています。 文字はシンボル化したものを呼び出しています。 backspaceにてひと文字ずつ消したいのですが、 消えてくれません。。。 ★の部分を決めうちすると動くのですが... var del1 = base1.getChildByName("b3"); かなり調べましたが、下記の書き方で動くみたいなんですが、 他の部分が間違っているのか、動いてくれません。 どなたかご教授お願い致します。 ---------------------------------------------------------------------- function KeyDownHandle(e:KeyboardEvent):void{ //backspace if(e.keyCode==8){ var del1 = base1.getChildByName("b" + "bunCnt");  ←★ base1.removeChild(del1); bunCnt -= 1; }else{ try{ onEnter = ""; var str:String = "m"+e.keyCode; var mcClass:Class = getDefinitionByName(str) as Class; moji = new mcClass(); base1.addChild(moji); moji.name = "b"+bunCnt; moji.x = mojiWidth; mojiWidth += mojiWidth; bunCnt += 1; }catch (e:ReferenceError){ text00.text =String("文字が未登録だよ"); } } }

  • JQueryでURL取得から文字列作成

    やりたいこととして 開いているページのURLを取得し .param()で指定したパラメータ(catg)だけを抜き出す 抜き出したパラメーターを 指定した文字列の末尾にくっつけて新しいURLとして loadを用いて特定のセレクタを空のdivに流し込む 以上のことを行いたいです 書いては見たのですが動作せずで・・・ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { var url = $.url().param(); url.catg; var str; str = "http://www.test.com" + url +"/"; $('#sample') .load('str dummy'); }); </script> <div id="sample"></div> 初心者のためあまり理解せずに書いている状態です どのようにすればよいかご教授いただけませんでしょうか?