- PR -

window.openerについて・・助けてください

1
投稿者投稿内容
nekoneko
会議室デビュー日: 2005/05/28
投稿数: 7
投稿日時: 2005-06-01 21:32
こんにちは、nekonekoともうします。
今困っていることがありまして・・JavaScriptです。
親画面から子画面を呼び出し、子画面の値を配列にした親画面のtextフォームに入れたいのですが・・

---------親画面ー---------------
<html>
<head>
<title>JavaScriptテスト</title>
</head>
<body>
<form name="form1">
<table border="1">
<script language="JavaScript">
<!--
for(i=0;i<5;i++){
document.write("<tr><td><input type='text' name='text[i]'></td><tr>");
}
//-->
</script>
</table>
<input type="button" onClick="window.open('a.html')" value="ジャンプ">
</body>
</form>
</html>

--------------------------------------------------------------

------------------子画面--------------------------------------

<html>
<head>
<title>サブウィンドウ</title>
<script language="JavaScript">
<!--
function junp(value){
window.opener.form1.text[0].value = value;
window.close();
}
//-->
</script>
</head>
<body>
<input type="button" value="押す" onClick="junp('aaa')">
</body>
</html>
-----------------------------------------------------------------

この子画面のfunctionの
window.opener.form1.text[0].value = value;
親画面のtextフォームの指定方法ができません・・・
一体どうしたらいいのか困っています。
どうか、解決方法ご存知の方はご伝授お願いします。

[ メッセージ編集済み 編集者: nekoneko 編集日時 2005-06-01 21:37 ]

[ メッセージ編集済み 編集者: nekoneko 編集日時 2005-06-01 21:38 ]
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-06-01 22:58
引用:
document.write("<tr><td><input type='text' name='text[i]'></td><tr>");

document.write("<tr><td><input type='text' name='text["+i+"]'></td><tr>");
引用:
window.opener.form1.text[0].value = value;

 window.opener.form1["text[0]"].value = value;

ではどうでしょうか?

# 以下は蛇足ですが。。。
同じ話題で何回立ててもレスが付きにくいのは、用語の使い方が独特なせいも
あるかもしれませんよ。
今回の内容に「textフォーム」なんて出てきませんし、
(出てくるフォームは"form1"のみ)社内方言なのかもしれませんが。。。
ちなみに、一つのFORMの中に以下のように同名のフィールドが複数ある場合、
form1.test[0]、form1.test[1]、form1.test[2]と配列として添え字をつけて
アクセスします。(checkboxなどで多い使い方です)
コード:
<FORM name="form1">

<INPUT type="text" name="test">
<INPUT type="text" name="test">
<INPUT type="text" name="test">
</FORM>

以下のようにフィールド名に添え字が付いている場合、
名前の違う複数のフィールドがあるだけですから、配列としては扱われません。
form1.test[0]と書いてもform1.testは一つも無いのでエラーになります。
その場合は、今回のように「添え字じゃなくて名前の一部なんだ」と
明示するためにform1["test[0]"]などと書いてアクセスします。
コード:
<FORM name="form1">

<INPUT type="text" name="test[0]">
<INPUT type="text" name="test[1]">
<INPUT type="text" name="test[2]">
</FORM>

ご参考になれば幸いです。

[ メッセージ編集済み 編集者: taro 編集日時 2005-06-01 23:08 ]
nekoneko
会議室デビュー日: 2005/05/28
投稿数: 7
投稿日時: 2005-06-01 23:40
nekonekoです。
taroさん、ご伝授ありがとうございます。

window.opener.form1["text[0]"].value = value;

という記述で試したところ
上手く作動しました。
ありがとうございます!!

>同じ話題で何回立ててもレスが付きにくいのは、用語の使い方が独特なせいも
>あるかもしれませんよ。

そうですね、なかなか上手く表現することができなくて・・・
でも、これから学習していこうと思います。

大変わかりやすいご説明見習いたいと思います。
とても勉強になりました!
ありがとうございます。



1

スキルアップ/キャリアアップ(JOB@IT)