• ベストアンサー

HTMLファイル同士での値渡し

困っています。 HTMLファイルからHTMLファイルへ移動するときに、 HTMLファイル1でJavaScript で算出された値を HTMLファイル2へ渡して使用したいのです。 showModalDialogだとダイアログにしか渡せないし・・・。 このように、値をそのまま次のページに渡すための方法を教えてください。 お願いします。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

すみません。うっかりしてました。 document.write(FORM[v1]); では、v1を変数と認識してしまうので、エラーになってしまいますね。 document.write(FORM.v1);  // 「FORM.v1」です あるいは document.write(FORM["v1"]); としてください。

LEGO321
質問者

お礼

出来ました!うれしーーーです。 v1 の値はこのソースで代入しないからどこから 値が代入されるんだろう??と考えつつも いろいろ試してもエラーがでてしまうので document.write(unescape(pair[1].replace("+"," ")); で無理矢理値を出そうとしてしまいました。 でも教えられた通りに直したらすんなり表示されました。 文法の意味をよく考えて勉強していこうと思います。 助かりました。ありがとうございます。

その他の回答 (2)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

JavaScriptで、パラメータをパースすればOKです。 ■h1.html ○JavaScriptで算出した値を、フォームに用意したhiddenにセットし、GET渡しします。 <body> <form name="h1" action="h2.html" method="get"> <input type="hidden" name="v1" value=""> <input type="button" name="b1" value="自動算出" onClick="document.h1.v1.value='ABCDE';"> <br> <input type="submit" value="送信"> </form> </body> ■h2.html ○<head></head>内で、URLに付加されたパラメータをパースし、配列FORMにセットします。 <head> <script><!-- var FORM = new Array(); parse(); function parse() {   // 関数にしなくてもいいのですが、一応   var buffer = location.search.substr(1);   var pairs = buffer.split("&");   for (var i in pairs) {     var pair = pairs[i].split("=");     FORM[pair[0]] = unescape(pair[1].replace("+", " "));   } } //--></script> </head> ○<body></body>内の値が必要なところで、document.write()を使います。 h1.htmlから受け取った値は、 <script><!-- document.write(FORM[v1]); //--></script> です。 # 日本語を送信する場合、受け取り側でコード変換を行う必要があります。 # コードを見やすくするため、全角スペースを入れている所があります。コピペする場合、注意してください。

LEGO321
質問者

補足

ありがとうございました! できれば hidden を使って値渡しをしたかったので、 このような方法がわかって嬉しいです。 ただ、h2.html の document.write(FORM[v1]); の部分でエラーがでてしまい、表示されません。 試しに上のソースをそのままコピーペーストして実行したのですが 同じでした。 以前見た記事で、 location.search はローカルでは認識しない、と いうものを見たのですが関係あるのでしょうか・・・?

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

可能ならサーバーサイドスクリプト(Perl, PHP, ASP, JSP等)を利用した方が良いんですけどね(^^;; HTML+JavaScriptなら、好ましくはありませんが Cookieを利用するというのはどうでしょう? ・・というか、これしか思いつきませんでした。 具体的には ■ HTMLファイル1 JavaScriptで計算した値をCookieに保存 ↓ ■ HTMLファイル2 Cookieから値を取得して、Cookieを削除 HTMLファイル1から2以外のページに移動した場合 直接HTMLファイル2にアクセスした場合 Cookieをオフにしている場合 JavaScriptをオフにしている場合 Cookieの有効期限の設定値 など色々問題はあるかと思いますが、 このような方法もあるという参考までに

LEGO321
質問者

お礼

ありがとうございました。 Cookieを使う、というのは考えていませんでした。 試しに途中までサンプルを作っていたら、 「クッキーは不可です。」と言われてしまいました。 (業務として作成しています) でもこのような方法もひとつある、ということで勉強になりました。 ありがとうございます。

関連するQ&A