• ベストアンサー

項目名に含まれた ” を上手く表示したいのですが

いつもお世話になっております。 今回の質問はASPとJavaScriptの組み合わせなので、本来ならばここにすべき質問ではないかもしれませんが 主にJavaScriptを使っている仕様なのでこちらに質問させていただきます。 こちらではなくASP側に記述すべき質問でしたらそのようにお返事ください。 質問です。 ASPでデータベースから項目名を全て抜き出してリンクで表示して クリックされるとOnClickイベントでその項目名を 別のウィンドウに表示させるというプログラムを作っています。 しかしこのASPでデータベースから項目名を抜き出す際に ”があるとJavaScriptエラーが発生してしまいます。 (上記とは別に、単純な例を挙げるとこうなります) var text_next = "<%=str(0)%>"; opener.document.FORM.TEXT_FIELD.value=text_next;     ↓ var text_next = """" ; (←エラー) opener.document.FOEM.TEXT_FIELD.value=text_next; あらかじめstr(0)をASP側でEncodeするとEncodeされた文字そのものが出力されてしまいます。 var text_next = "<%=Server.HTMLEncode(str(0))%>";     ↓ var text_next = "&quot;&quot;";(←エラーじゃないけど……) 私的にASPではなく、JavaScriptで解決しなければいけない問題だと思いましたが var text_next = escape(<%=str(0)%>);     ↓ var text_next = ""; これでは何も出力されないのでどうしようもありません。 そもそもこういう方法からして間違っているなどでもかまいません。 でももし何か打開策がありましたらご指導お願いいたします。

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

  • ベストアンサー
  • shorn
  • ベストアンサー率41% (12/29)
回答No.2

"の中に"を入れる場合は¥"にします。 基本的にASPはわからないのですがJAVA等で行う場合もこうしています。 文字列中の"を¥"に変えるメソッドでも作ってみては? (¥はここでは文字化けを考慮して全角で記述していますが半角の円サインマークです) var text_next = """";これはエラー。 var text_next = "\"\"";これは可能。 どのようなプログラムを現在作成しているのかがわからないためこれが最良であるとはいいかねますが、これが基本的な方法だと思います。

その他の回答 (2)

  • shorn
  • ベストアンサー率41% (12/29)
回答No.3

補足 ANo.#2 文字列中の"を¥"に変えるメソッドでも作ってみては? >>ASP側のメソッドです。 ANo.#1 シングルクォーテーションで囲ってみてはいかがでしょう、、、。 >>'で囲むと今度は'で同じようなことが発生します。 追加(蛇足) データベース内に複数行の文字列が入っていた場合エラーが発生します。 var text_next = "*** *********"; このような形になるため。 この場合は <input type=hidden value="*** *********"> にすることで防げますが・・・。 (この項目からデータを参照するようにする。)

digtoyoda
質問者

お礼

アドバイス通りにReplaceを用いて該当する文字の頭に¥を付ける方法で 無事に問題解決することができました。 ありがとうございます! 追加(蛇足)と書いてありますが、自分はこういう事情はさっぱり知らなかったので 凄く勉強になりました、ありがとうございました。 ここからは関係ない話で恐縮ですが 私の書いた質問文は”を半角で打ってたのですが、 投稿直前に内容を再編集しようとしたら何故か文章中の全ての”が¥”となっていたんです。 きっと場慣れしたプログラマーならこの時点で問題解決の糸口でも見つけたんでしょうか。 ……いや、そもそも場慣れしてるならこんなことで悩んだりしませんよね(^^; とても助かりました、またお世話になるかもしれませんが そのときも宜しくお願いします。

noname#1692
noname#1692
回答No.1

シングルクォーテーションで囲ってみてはいかがでしょう、、、。 ---VBScript(ASP) Dim str = "te""st" ---JavaScript //alert(<%=str%>); ←エラー var text = '<%=str%>'; alert(text);

digtoyoda
質問者

お礼

この方法で”が表示されました、ありがとうございます。 ただし、””(2つ)と記述して”(1つ)と判定されるらしいので(?)、そこは上手くやれば何とかなりそうです。 ただしこの場合、’が使えなくなってしまいました。 名前に含まれている’と”で囲う方法を分ける方法も考えましたが、 両者が混在していた場合のことを考えるとちょっと難しいみたいです。 質問の内容自体に問題がありました、スイマセン。 項目名に’や”の両方が含まれていても使える方法があればお願いします。 でもry-uguさんの書き込みは勉強になりました。 ありがとうございました。 もう少し皆様の意見を賜りたいと思いますのでご了承ください。 では失礼します。

関連するQ&A