• ベストアンサー

リンク先のアドレス内に「?」が入っている場合の対処法

先日、元々のリンク先から1行テキスト領域にID等を入力し各々異なる場所に飛ばす方法を教えていただきました。 そして解決したのですが、そのアドレスに「?」が入っている場合、反応しないようです・・・。 解決方法はあるのでしょうか?どなたかご教授お願いします。下記が現在組んでいるものです。 ●通常のアドレスの場合(「?」無し) ※これは成功します <script> function change(){ var change=document.getElementById("change"); var tags=document.getElementsByTagName("a"); for(var i=0;i<tags.length;i++){ var url="http://aaa.bbb.ccc/" if(tags[i].href.match(url)){ tags[i].href=url+change.value; }; } } </script> <a href="http://aaa.bbb.ccc/" target="_blank"> <img src="http://aaa.bbb.ccc/image/d.gif"></a> <input type="text" id="change"> <input type="button" value="変換" onClick="change()"> ●「?」がアドレス内にある場合 ※これは反応しません <script> function change(){ var change=document.getElementById("change"); var tags=document.getElementsByTagName("a"); for(var i=0;i<tags.length;i++){ var url="http://aaa.bbb?.ccc/" if(tags[i].href.match(url)){ tags[i].href=url+change.value; }; } } </script> <a href="http://aaa.bbb?.ccc/" target="_blank"> <img src="http://aaa.bbb.ccc/image/d.gif"></a> <input type="text" id="change"> <input type="button" value="変換" onClick="change()"> 宜しくお願いします。

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

  • ベストアンサー
  • RH01
  • ベストアンサー率45% (37/82)
回答No.4

再びNo3です。 私もすごく詳しいわけではないので、曖昧な回答ですが undefined というのは、「データ型を指定していない変数の初期値」 ということらしいので、何か変数に関連がありそうですよね。 とりあえず、私は↓の状態でテストして IE7、safari(windows版)で動作していました。 ためしに、以下をコピペしてみて、動作するのを確認してもらえますか? その後、必要な個所(URLなど)を変更する時に、全部一度に変更してテストするのではなく、1か所変更するごとに ブラウザで動作確認していけば、何を修正したらエラーが出るのか わかるので、解決方法も見つけやすいと思います。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Script-type" content="text/javascript"> <title>無題ドキュメント</title> <script> function change(){ var change=document.getElementById("change"); var tags=document.getElementsByTagName("a"); for(var i=0;i<tags.length;i++){ var url="http://aaa.bbb.com/aaa.cgi"; var url2="?act="; if(tags[i].href.match(url)){ tags[i].href=url+url2+change.value; } } } </script> </head> <body> <a href="http://aaa.bbb.com/aaa.cgi" target="_blank"> <img src="http://aaa.bbb/img.gif"></a> <input type="text" id="change"> <input type="button" value="変換" onClick="change()"> </body> </html>

noname#76175
質問者

お礼

大変ありがとうございます! 先日よりお手数をお掛けし申し訳ございません。 先程、無事解決いたしました。 原因は「?」等が意味のある特殊な記号という事を 軽視していた点で「?」の他に「=」や「&」等もあり これが特殊だと思っていなかった私の無知さです・・。 今回のご回答にヒントを得て全て分割した事により 解決に至りました。 RH01様はじめ、ご回答を頂いた皆様、 大変ありがとうございました。 失礼します。

その他の回答 (3)

  • RH01
  • ベストアンサー率45% (37/82)
回答No.3

こんにちは。 「?」は特別な意味も持つものなので たぶんmatchで比較する時に「?」があるとダメなんじゃないかと思います。 ?があるURLの例として↓こんなのにしてみました。 http://aaa.bbb.com/aaa.cgi?act= テキストボックスに入れた値がくっついて http://aaa.bbb.com/aaa.cgi?act=aaa とか http://aaa.bbb.com/aaa.cgi?act=bbb にしたいとして(ということで合ってますか?) var url="http://aaa.bbb.com/aaa.cgi"; var url2='?act='; if(tags[i].href.match(url)){ tags[i].href=url+url2+change.value; 3行目に、?から後ろを入れてしまってます。 ?から後ろも含めてちゃんとマッチしてるかチェックしたかったら 意味のない回答ですが参考までに。

noname#76175
質問者

お礼

ご回答ありがとうございます。 私のやりたい事は、例文のURLの書式で間違いないです。 早速、試してみたのですがスクリプトエラーは出なくなりました。 しかし、今度は「=」の後が入力した文字ではなく 「undefined」と出てしまいます。 自分なりに色々と試してみましたがどうしても解決には至りません。 他になにか原因や方法がありますでしょうか・・・?

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

ちらっとしか見てませんが、matchで比較してるからではないでしょうか

noname#76175
質問者

お礼

ご回答ありがとうございます。 全く解からない状況まできてしまいました・・・。 他に何か方法はありますでしょうか? 何かありましたら宜しくお願いします。

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

var url="http://aaa.bbb?.ccc/" とありますが、これは例がわるい・・・ そんなURLは存在しなくないですか? var url="http://aaa.bbb.ccc/?ddd" みたいな感じじゃないの?

noname#76175
質問者

お礼

何度もお手数をお掛けし申し訳ございません。 確かに変な例になっていました・・。 ご指摘の通り、 var url="http://aaa.bbb.ccc/?ddd" でした。すいません。 これの解決方法はありますでしょうか? どうか宜しくお願いします。 間違えて補足に返事を書いてしまいました。

noname#76175
質問者

補足

何度もお手数をお掛けし申し訳ございません。 確かに変な例になっていました・・。 ご指摘の通り、 var url="​http://aaa.bbb.ccc/?ddd"​ でした。すいません。 これの解決方法はありますでしょうか? どうか宜しくお願いします。