• 締切済み

VBScriptで子画面へ配列のデータを渡したい!

子画面(showModalDialogでオープン)で親画面から渡された引数を利用したいです。 親は配列を渡して、子はその配列の中身を参照したいです。 下記の例でやると、「エラー:型が一致しません。:'window.dialogArguments'」と、(1)の所で言われてしまいます。 色々探したのですが、JavaScriptの例や配列ではない場合の例ばかりでJVScriptの場合のやりかたがわかりません。 どなたか教えてください。 親画面 <script language="vbScript"> <!-- dim arg(20) arg(1) = "Value1" ~ arg(1) = "Value20" window.showModalDialog "ko.html",arg --> </script> 子画面 <script language="vbScript"> <!-- dim arg(20) arg = window.dialogArguments ・・・(1) Msgbox arg(1) --> </script>

みんなの回答

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

>回答していただいたソースをそのまま、 >実行してみると 変ですね。 document.appendChild はIE5.5で正常に機能するはずなんですが、 私のは WindowsXP+IE6Sp1 WSHのバージョンは5.6です。 全ソースは 親---- <HTML> <HEAD> <META http-equiv=Content-Type content="text/html; charset=s-jis"> <SCRIPT LANGUAGE=vbscript> <!-- dim elminput(20) 'VBの変数を直接渡せないので 'インプットタグを使用する for i=0 to 19 set elminput(i) = document.createElement("INPUT") next Sub button1_onclick elminput(1).value = "Value1" window.showModalDialog "ko.html",window End Sub Sub window_onload for i=0 to 19 document.appendChild elminput(i) next End Sub --> </SCRIPT> </HEAD> <BODY> <P>ファイトーー!( ゜ロ゜)乂(゜ロ゜ )イッパーーツ!!<BR>がんばってね。 </P> <P> <INPUT id=button1 type=button value=クリック name=button1></P> <P></P> </BODY> </HTML> 子--- <HTML> <HEAD> <TITLE></TITLE> <script language="vbScript"> dim arg(20) arg(1) = dialogArguments.elminput(1).value window.alert arg(1) </SCRIPT> </HEAD> <BODY> </BODY> </HTML> です。 >別の部分でFileSystemObjectを >利用するためHTAを利用しようと思っています。 HTAでも機能しましたよ。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

タイプミスしました。 子 <script language="vbScript"> dim arg(20) arg(1) = dialogArguments.elminput(1).value window.alert arg(1) </SCRIPT> です。

forllage
質問者

補足

御回答ありがとうございます。 回答していただいたソースをそのまま、実行してみると「エラー:オブジェクトでサポートされていないプロパティまたはメソッドです。:'document.appendChild'」と言われてしまいます。利用するのに何か宣言等必要なのでしょうか? ちなみに、実行環境はWinMe,IE5.50SP2です。 親子画面とも、ローカルドライブ上においてローカルアプリケーションを作成しています。 質問には影響しないと思いますが、別の部分でFileSystemObjectを利用するためHTAを利用しようと思っています。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.1

親ウィンドウで 配列タグを作成して、そのタグのValue値を使用してはどうでしょうか。 親 <SCRIPT LANGUAGE=vbscript> <!-- dim elminput(20) for i=0 to 19 set elminput(i) = document.createElement("INPUT") next Sub button1_onclick elminput(1).value = "Value1" window.showModalDialog "ko.html",window End Sub Sub window_onload for i=0 to 19 document.appendChild elminput(i) next End Sub --> </SCRIPT> 子 <script language="vbScript"> dim arg(20) arg(1) = dialogArguments.emlinput(1).value window.alert arg(1) </SCRIPT>

関連するQ&A

  • 子画面へデータを渡したい!

    親画面でテキスト入力した内容を、 showModalDialogで開いたポップアップの子画面で表示して、更にHiddenで値を持たせたいんですが、上手く出来ないんです... (親側制御) val = test.asp args = new Array(); args[0] = document.FRM00.txtUSRID.value; args[1] = document.FRM00.work_date.value; ret = window.showModalDialog(val,args); (子画面制御) Private myUser myUser = window.dialog.arguments[0].value; myTargetDate = window.dialog.arguments[1].value; 子画面で、VBScriptで宣言した変数へ格納しようとしてるのですが、やっぱり無理なんでしょうか? もし無理なら、何か他に手はないのでしょうか???

  • VBScriptでのforms[0]など配列で取得できますか?

    下記のJavaScriptの配列のようにオブジェクトを取得したいと 思っていますが、VBScriptでは、無理なのでしょうか?? window.document.forms[0].elements[0].value VBScriptは不慣れで困っています。 HPでの検索でもなかなかVBScriptの良いリファレンスを見つける 事ができずにいます。もしお勧めがありましたら併せて教えてください。

  • 子windowに配列を渡したいのですが

    お世話になります QNo.483099にて同じような感じの質問が出ていたのですが、 ちょっと本質が違うような気がするので、別に質問させていただきます。 まず、親画面(A.html)にて配列を作成します(仮にarrayとします) 次に、ボタンのクリックイベントで子window(B.html)を開き、そのwindowにarrayの要素を含んだリストボックスを表示させたいのですが、 子windowを開くロジックを window.showModalDialog('B.html','array','dialogHeight:150px;dialogWidth:300px;status:no;') としてみたのですがうまくいきません。 これをjavascriptのみで実装することは可能なのでしょうか? よろしくお願いします。

  • VBScriptの書き方

    メンテナンス画面から登録ボタンを実行して、 入力内容にエラーがあったら、 エラーメッセージを表示して、 登録画面をもう一度表示する。 といった処理にしたいのですが、 エラーメッセージをVBScriptで表示すると、 メッセージが、どうしても2回表示されてしまいます。 例) <% If xx then %> <script language=VBScript> <!-- MsgBox("aaa") //--> </script> <% End If %> : : : <html> : : </html> <html>タグの前に<script>タグを書くとsubmitされるのでしょうか? 結局、html中のjavaScriptに書き込んで、<body>のonloadでメッセージを 表示する処理に直したのですが、腑に落ちないので… ご存知の方、教えてください。 ちなみに環境はNT4.0、IE5.5です。

  • VBscriptの配列変数をJavascriptで使うには

    下記ソースでVBscriptの配列変数をJavascriptで使うにはどうしたらいいでしょうか。 vbscriptで配列stat2(i)に値セット後javascriptで使いたい <script type="text/javascript"> <!-- //===== function test(){ var i; for (i=0;i<9;i++){ document.form1.text1[i].value=<%=stat2(i)%>; <-これだとエラー } } //====== //--> </script>

  • VBScript

    下記のようなプログラムを書いていますが GetObjectのところでエラーになります。 文法に誤りがあるようですが、解決方法がわかりませんので ご存じの方、ご教示お願いいたします。 <!DOCTYPE html> <html> <head> <script LANGUAGE="VBScript"> Function Entry() Dim strServerName Dim strUserName Dim strADSIPath Dim strPassword Dim oUser strServerName="XXX" strUserName=window.document.getElementById("name").value strPassword=window.document.getElementById("pass").value strADSIPath = "WinNT://" & strServerName & "/" & strUserName oUser = GetObject(strADSIPath) oUser.Setpassword strPassword oUser.SetInfo oUser = Nothing End Function </script> </head> <body> <table> <tr><th>login name</th><td><input type="text" size="10" id="name"></td></tr> <tr><th>password</th><td><input type="text" size="10" id="pass"></td></tr> </table> <input type="button" value="entry" onclick="Entry()"> </body> </html>

  • 画面オブジェクトを変数ではなく、画面名で取得する

    いつもお世話になっています。 調査が行き詰ってしまったため、 皆様のご助言を頂きたく投稿しました。 javascriptを用いて、 親画面から子画面を開いた後、 子画面に下記のような処理をする方法を探しています。 <!-- 親画面で子画面を開く際の処理 var ko_gamen; ko_gamen = window.open(ko.html,"state"); ko_gamen.focus(); //<-(a) --> 処理(a)を下記の例のようにオブジェクトを格納した変数を使わず、 windowの名前を指定して子画面のオブジェクトを指定することは可能でしょうか。 また、可能であるならその方法を教えていただいてよろしいでしょうか。 //例 state.window.focus(); よろしくお願いします。

  • 子画面から親画面のデータを操作するには?

    4つのフレームから成る画面より子画面を開き、 (2番目のフレームに子画面を呼び出すボタンが有ります) 子画面から親画面の2番目と3番目のフレームのデータを 操作したいのですが、上手くいきません。 window.top.opener.frames[1].formxxx.xxxx.value=xxxxx; window.top.opener.frames[2].formxxx.xxxx.value=xxxxx; で良いと思ったのですが。。。 どなたか分かる方いらっしゃったら教えて下さい。

  • HTML + VBScript で Sleep できない

    お世話になります。ご教授ください。 類似の質問が既にあるのかもしれませんが、質問させていただきます。。。 HTML上に記述するVBScriptでは、WScriptは使用できないという記事を見かけます。 実際、HTML+VBScriptで使用すると、 変数は宣言されていません:'WScript' とエラーが出ました。 WSH は WScript のインスタンスを読み込むことができないうんぬん、と書かれていました。 書きたいことは、 WScript.Sleep 1000 です。 もしくは、これに変わる何かがしたいです。 外部ファイル化(.vbs)を試してみましたが、ダメでした。 ==== サンプル(Sample.vbs) ==== Option Explicit MsgBox "start" Dim Idx = 0 Do While Idx <> 3 WScript.Sleep 1000 MsgBox Idx Idx = Idx + 1 Loop WScript.Sleep 1000 MsgBox "end" ================ <html> <head> <meta http-equiv="Content-Script-Type" content="text/vbscript"> <script language="VBScript" type="text/vbscript" src="sample.vbs"></script> </head> … という感じです。 上記はあくまでサンプルですが、最終的には「ループの中で」待ち状態、になるようにしたいです。 Do While ある条件 1秒待ち ある条件に、なるかならないか Loop (setTimeout を使用する例が書かれていましたが、それではループ制御は走り続け、CPUが痛い目に合いました。。。) もしかして、WScript は使用できるのに、記述ミスかもしれませんし。。。 できない場合は、それに変わる案などいただけるとありがたいです。 よろしくお願いします。

  • <Script Language="VBSCRIPT" RUNAT="SERVER"> </script> と <% %>は違うの??

    ASP開発をしています。 あるASPでIncludeファイルで配列宣言 Dim gsABC(10)を宣言します。 Includeファイルの中身 <Script Language="VBSCRIPT" RUNAT="SERVER"> Dim gsABC(10) </script> そして、ASPファイルでその変数gsABC(0)を 使おうとするとエラーが発生します。 けれども、Includeファイルの中身を <% Dim gsABC(10) %> にすると正常に動きます。 2つは同じものだと思っていたのですが、 これによって違うものなのかと認識するように しなければと思ってますが・・・ どこが違うのか分かりません。 どなたか分かりやすく簡単でいいですから 説明して頂けないでしょうか? よろしくお願いします。

専門家に質問してみよう