• ベストアンサー

JavaScriptでスライドショーを実現したい

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">の部分で、なぜか文字化けしてしまい、 関数を新ウィンドウに組み込ませることもできませんでした。 ソースがなくて分かりづらいとは思いますが、 なにかよい方法がありましたら、ご教授下さい。

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

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

ちょっと強引かも知れませんが、親ウィンドウのスクリプトの関数を呼び出すように、その出力するボタンのソースを以下のようにしてみてはいかがでしょうか? writeln("<input type='button' value='前の写真' onclick='window.opener.ChangeImage(-1)'>"); writeln("<input type='button' value='次の写真' onclick='window.opener.ChangeImage(1)'>"); クリックイベントで関数を呼び出す部分に手を加え、親ウィンドウ(window.opener)のプロパティの中にある関数を指定する形にしてあります。 多分、こうした方法で、親ウィンドウ内の関数を子ウィンドウから呼び出すこともできるのではないかと思います。 参考になれば。

Takochu
質問者

お礼

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

Takochu
質問者

補足

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

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

かなり当てずっぽうに近い回答で申し訳ないですが、ダブルクォーテーションはちゃんとエスケープしてますか? 例えば、 ○ Document.writeln("<script language=\"JavaScript\">"); × Document.writeln("<script language="JavaScript">"); あともう一つ、スクリプトにスクリプトを出力させようとするといろいろ面倒なことになるので、スクリプトだけ外部ファイルに分けた方がやりやすいと思います。(使いまわしもできますしね)

Takochu
質問者

お礼

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

Takochu
質問者

補足

念のため、試してみました。  document.writeln("<script src=\"chgimage.js\"></script>"); しかし、この1行を追加しただけで、実行時に文字化けし、 正常なページが表示されませんでした。 それから、お聞きしたいのですが、 他のDocumentの関数へ外部参照するといったことはできるのでしょうか?

関連するQ&A