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

JavaScriptでスライドショーのようなページを作成中です。
100枚くらいの連番ファイル名の画像を、
tableを使って5×20くらいでサムネイル表示させ、
その1つの画像をクリックすると、window.openを使って
新ウィンドウを開き、そのウィンドウにDocument.writelnを使って
選択した画像を表示し、その下にフォームのボタンを配置し、
ボタンを押すことで、次の画像に切り替えることができる。
という風にしたいのですが、
フォームのボタンを押すことで画像を切り替える、
というのが実現できません。こんな感じです。

 writeln("<input type='button' value='前の写真' onclick='ChangeImage(-1)'>");
 writeln("<input type='button' value='次の写真' onclick='ChangeImage(1)'>");

つまり、フォームのボタンを押して、画像を切り替える関数に
飛んでいないようです。
恐らく、その新ウィンドウに、
関数が登録されていないからだと思うのですが、
JavaScriptをまだよく分かっていないので、
その辺がよく分かりません。
新ウィンドウに関数をDocument.writelnで出力しようとすると、
<script language="JavaScript">の部分で、なぜか文字化けしてしまい、
関数を新ウィンドウに組み込ませることもできませんでした。
ソースがなくて分かりづらいとは思いますが、
なにかよい方法がありましたら、ご教授下さい。

A 回答 (2件)

ちょっと強引かも知れませんが、親ウィンドウのスクリプトの関数を呼び出すように、その出力するボタンのソースを以下のようにしてみてはいかがでしょうか?



writeln("<input type='button' value='前の写真' onclick='window.opener.ChangeImage(-1)'>");
writeln("<input type='button' value='次の写真' onclick='window.opener.ChangeImage(1)'>");

クリックイベントで関数を呼び出す部分に手を加え、親ウィンドウ(window.opener)のプロパティの中にある関数を指定する形にしてあります。 多分、こうした方法で、親ウィンドウ内の関数を子ウィンドウから呼び出すこともできるのではないかと思います。

参考になれば。

この回答への補足

皆さん、ありがとうございました。

補足日時:2004/01/15 00:32
    • good
    • 0
この回答へのお礼

素晴らしいです。
無事、親ウィンドウの関数の呼び出しに成功しました。
とても参考になりました。
良い方法を教えていただきありがとうございました。

お礼日時:2004/01/13 01:58

かなり当てずっぽうに近い回答で申し訳ないですが、ダブルクォーテーションはちゃんとエスケープしてますか?



例えば、
○ Document.writeln("<script language=\"JavaScript\">");
× Document.writeln("<script language="JavaScript">");

あともう一つ、スクリプトにスクリプトを出力させようとするといろいろ面倒なことになるので、スクリプトだけ外部ファイルに分けた方がやりやすいと思います。(使いまわしもできますしね)

この回答への補足

念のため、試してみました。

 document.writeln("<script src=\"chgimage.js\"></script>");

しかし、この1行を追加しただけで、実行時に文字化けし、
正常なページが表示されませんでした。

それから、お聞きしたいのですが、
他のDocumentの関数へ外部参照するといったことはできるのでしょうか?

補足日時:2004/01/12 22:18
    • good
    • 0
この回答へのお礼

補足の追加になりますが、
補足の欄に書きました行を「/*」と「*/」で
コメントアウトしても、文字化けします。
その1行を取り去ると問題なく実行できます。

お礼日時:2004/01/12 22:32

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