• 締切済み

windowオブジェクトを引数で送りたい

連続ですみません、表題の件についてご教授をお願いします。 window.openで別ウィンドゥを開いていますが、 この時返ってくるwindowオブジェクトを 別の関数で使用したいのですが引き渡しができません。 やりたい事は下記のようなイメージですが、オブジェクトエラーが発生します。 winname = window.open("test.html", "win"); functest(winname); function functest(winnameF){ alert(winnameF.name); } 引渡しの方法がありましたらご指導いただけませんでしょうか。 よろしくお願いいたします。

みんなの回答

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

ローカル変数ってのは functionから抜けた時点で無くなる運命ですから、 引き渡そうにもできないでしょう。 >setTimeout("functest(" + winname + ")",1000); で、これは変数を定数にしてるから実現できちゃうんです。 >winnameをグローバル変数にする事は残念ながらできません。 ヽ(+▽+)ノ 別の方法を考えたほうがいいと思いますよ。

g_RIN
質問者

お礼

ご指示ありがとうございます。その後悪戦苦闘した結果、 考え方を変更して、グローバルな連想配列で対応する事にしました。 ローカル変数をキーとする形で、なんとか目的の機能は果たせたと思います。 細やかなご指導ありがとうございました。 #でも、文字列も数値も引き渡せるのに、OBJECTだけは変数ごとじゃないと引き渡せないって (プログラムとしては)当たり前なのでしょうが、心境として納得がいかない~(苦笑)

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

var winname; function ittochan(){ winname = window.open("test.html", "win"); setTimeout("functest(winname)",1000); }   function functest(winnameF){ alert(winnameF.name); } こういうふうに winnameをグローパルにしちゃ駄目なの?

g_RIN
質問者

補足

再々のアドバイスありがとうございます。 ご指摘の通り、winnameがローカル変数でさらに下記のように winnameの名前自体を修正(?)しているので、連携がうまくいっていないようです。 function getlist(namae,url){ winname = namae; winname = window.open(url, "win"); setTimeout("functest(winname)",1000); } 擬似マルチスレッドにしたいので、winnameをグローバル変数にする事は残念ながらできません。 実現方法に行き詰まって途方に暮れています(;_;)

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

あっ、もしかして winname て ローカル変数なの? ちなみに >setTimeout("functest(" + winname + ")",1000); この場合、 winname のタイプは、 文字列とか数値じゃなきゃうまくいかないとおもいますよ。

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

それでもうまく動きましたよ win って出ました。 InternetExplorerのバージョンによるのかなぁ (・ε・?

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

そのスクリプト InternetExplorer6では うまく動きましたよ。

g_RIN
質問者

補足

アドバイスありがとうございます。当方の勘違いでした。 setTimeoutと組み合わせた時のみのエラーでした。 winname = window.open("test.html", "win"); setTimeout("functest(winname)",1000);    ←ここ   function functest(winnameF){ alert(winnameF.name); } とした時にwinnameの「宣言されていない」エラーが出ます。そのため setTimeout("functest(" + winname + ")",1000); とするとfunctest()で「'object'は宣言されていません」のエラーになってしまいます。 素直にオブジェクトの形のまま、functestに引渡したいのです。 引き続きご指導をお願いします。

関連するQ&A