プロが教える店舗&オフィスのセキュリティ対策術

困っています。

HTMLファイルからHTMLファイルへ移動するときに、
HTMLファイル1でJavaScript で算出された値を
HTMLファイル2へ渡して使用したいのです。

showModalDialogだとダイアログにしか渡せないし・・・。
このように、値をそのまま次のページに渡すための方法を教えてください。
お願いします。

A 回答 (3件)

すみません。

うっかりしてました。

document.write(FORM[v1]);
では、v1を変数と認識してしまうので、エラーになってしまいますね。

document.write(FORM.v1);  // 「FORM.v1」です
あるいは
document.write(FORM["v1"]);
としてください。
    • good
    • 7
この回答へのお礼

出来ました!うれしーーーです。

v1 の値はこのソースで代入しないからどこから
値が代入されるんだろう??と考えつつも
いろいろ試してもエラーがでてしまうので
document.write(unescape(pair[1].replace("+"," "));
で無理矢理値を出そうとしてしまいました。

でも教えられた通りに直したらすんなり表示されました。
文法の意味をよく考えて勉強していこうと思います。
助かりました。ありがとうございます。

お礼日時:2001/06/26 16:52

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>
です。

# 日本語を送信する場合、受け取り側でコード変換を行う必要があります。
# コードを見やすくするため、全角スペースを入れている所があります。コピペする場合、注意してください。

この回答への補足

ありがとうございました!

できれば hidden を使って値渡しをしたかったので、
このような方法がわかって嬉しいです。

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

補足日時:2001/06/26 15:05
    • good
    • 3

可能ならサーバーサイドスクリプト(Perl, PHP, ASP, JSP等)を利用した方が良いんですけどね(^^;;



HTML+JavaScriptなら、好ましくはありませんが
Cookieを利用するというのはどうでしょう?
・・というか、これしか思いつきませんでした。

具体的には

■ HTMLファイル1
JavaScriptで計算した値をCookieに保存

■ HTMLファイル2
Cookieから値を取得して、Cookieを削除

HTMLファイル1から2以外のページに移動した場合
直接HTMLファイル2にアクセスした場合
Cookieをオフにしている場合
JavaScriptをオフにしている場合
Cookieの有効期限の設定値

など色々問題はあるかと思いますが、
このような方法もあるという参考までに
    • good
    • 2
この回答へのお礼

ありがとうございました。

Cookieを使う、というのは考えていませんでした。
試しに途中までサンプルを作っていたら、
「クッキーは不可です。」と言われてしまいました。
(業務として作成しています)

でもこのような方法もひとつある、ということで勉強になりました。
ありがとうございます。

お礼日時:2001/06/26 15:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています