• ベストアンサー

window.openについて。

初歩的な質問で申し訳ありません。 ★<script> function openWin(filename){ newWin = window.open(winname + ".html", "", "width=300, height=200, location=no, menubar=no, toolbar=no,resizable=yes"); } </script> ★<a href="JavaScript:openWin('pr00001')">PR00001</a> ・・・という二つのパーツ(★)があるのですが ここで分からないことがあります。 『function openWin(filename)』の『filename』にpr00001というhtmlファイルを埋め込む・・というのは理解できるのですが最初のパーツにある『newWin = window.open(winname + ".html"・・・』の中の『winname + ".html"』とは何を指しているのでしょうか・・・・。 大変申し訳ありませんがご指導お願いいたします。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.2

スクリプトにミスがあるように思うのですが… このスクリプトで、狙い通りの動作は確保できているのでしょうか? とりあえず、このソースの内容についてですが、 <a href="JavaScript:openWin('pr00001')">PR00001</a> この部分は、関数openWin()に対して、「pr00001」という値(引数)を引き渡して、その一連の処理を実行するということを表しています。 このケースについては、質問文にある理解した内容と実質的には同じと考えても良いかもしれません(ご質問文の表現は、厳密には間違っているように思えます)。 それで、 function openWin(filename){ newWin = window.open(winname + ".html", "", "width=300, height=200, location=no, menubar=no, toolbar=no,resizable=yes"); } こちらの方ですが、関数名の後に続く括弧内のfilenameという変数(引数)は、関数を呼び出した側で指定した値を持っている変数として扱われます。 しかし、このスクリプトの記述では、このfilenameという引数が利用されずに、winnameという新しい変数が出てきてしまっているのではないでしょうか。 本来であれば、この部分は「filename+".html"」となるように思います。 それで、この部分についてですが、これは関数の呼び出し側で引数として渡された値に".html"という文字列を加え、呼び出そうとしているHTMLファイルの名前を生成しているようです。 先の例で行けば、openWin('pr00001')という記述でこの関数を呼び出すようにしてありますが、これは関数の方で定義されている引数filenameを'pr00001'という文字列として扱い、関数の処理を実行するということになりますので、「filename+".html"」の部分は、文字列同士を足し合わせて「pr00001.html」という文字列が生成されます。 結果的に、pr00001.htmlというファイルを、新しいウィンドウに対して呼び出す処理になります。 もし、呼び出す側の記述が <a href="JavaScript:openWin('index')">Index</a> となっていたとしたら、こちらのリンクでは関数openWin()を呼び出す際に、引数に「index」という文字列を指定しているので、この処理の実行時にopenWin(filename)内のfilenameの部分が'index'という文字列として処理され、関数が処理された結果として、index.htmlというファイルが新しいウィンドウに読み出されます。 乱文失礼しました。 参考になれば…

nekocya
質問者

お礼

ありがとうございます!その通りでした。 修正したらできました! 参考書が間違ってたのでしょうか・・・ 見落としてるところがあるかもしれないので もう一度じっくり見てみます。 謎がとけて寝れそうです(笑 助かりました。_(._.)_

その他の回答 (1)

  • shy00
  • ベストアンサー率34% (2081/5977)
回答No.1

Win('pr00001')で指定するHTMLファイルを開きなさいと言う命令では・・・ ちなみに「pr00001」がnameです

nekocya
質問者

お礼

ありがとうございます。 初心者のため??です・・・(TT)

関連するQ&A

専門家に質問してみよう