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">の部分で、なぜか文字化けしてしまい、
関数を新ウィンドウに組み込ませることもできませんでした。
ソースがなくて分かりづらいとは思いますが、
なにかよい方法がありましたら、ご教授下さい。
No.2ベストアンサー
- 回答日時:
ちょっと強引かも知れませんが、親ウィンドウのスクリプトの関数を呼び出すように、その出力するボタンのソースを以下のようにしてみてはいかがでしょうか?
writeln("<input type='button' value='前の写真' onclick='window.opener.ChangeImage(-1)'>");
writeln("<input type='button' value='次の写真' onclick='window.opener.ChangeImage(1)'>");
クリックイベントで関数を呼び出す部分に手を加え、親ウィンドウ(window.opener)のプロパティの中にある関数を指定する形にしてあります。 多分、こうした方法で、親ウィンドウ内の関数を子ウィンドウから呼び出すこともできるのではないかと思います。
参考になれば。
素晴らしいです。
無事、親ウィンドウの関数の呼び出しに成功しました。
とても参考になりました。
良い方法を教えていただきありがとうございました。
No.1
- 回答日時:
かなり当てずっぽうに近い回答で申し訳ないですが、ダブルクォーテーションはちゃんとエスケープしてますか?
例えば、
○ Document.writeln("<script language=\"JavaScript\">");
× Document.writeln("<script language="JavaScript">");
あともう一つ、スクリプトにスクリプトを出力させようとするといろいろ面倒なことになるので、スクリプトだけ外部ファイルに分けた方がやりやすいと思います。(使いまわしもできますしね)
この回答への補足
念のため、試してみました。
document.writeln("<script src=\"chgimage.js\"></script>");
しかし、この1行を追加しただけで、実行時に文字化けし、
正常なページが表示されませんでした。
それから、お聞きしたいのですが、
他のDocumentの関数へ外部参照するといったことはできるのでしょうか?
補足の追加になりますが、
補足の欄に書きました行を「/*」と「*/」で
コメントアウトしても、文字化けします。
その1行を取り去ると問題なく実行できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウから親ウィンドウ...
-
デスクトップ画面を4分割するには
-
VBAで任意のウインドウのサイズ...
-
親ウィンドウから開いた子ウィ...
-
孫ウインドウを閉じたら親をリ...
-
サブウィンドウからメインウィ...
-
ブラウザの×ボタンを効かなくす...
-
テーブルの<trでウィンドウAを...
-
親ウィンドウと子ウィンドウの...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
別フレームのページを更新させたい
-
リンク時、親ウインドウを最前...
-
助けてGmailでボタン表示が消え...
-
ウィンドウ名からウィンドウオ...
-
新しいウィンドウを開かない設定
-
インタネットからPDFファイルだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
window.Openをモーダルにできま...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウの存在確認
-
初心者javascript グーグルクロ...
-
インタネットからPDFファイルだ...
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウより親ウィンドウ...
-
1クリックでモーダルを開いてか...
-
子ウィンドウを常に手前表示、...
-
ポップアップと作業ウィンドウ...
-
IEでのみ発生するJavaScriptエラー
-
ブラウザ(IE)からエクスプロー...
-
JavaScriptで指定Windowを最大...
-
リンク時、親ウインドウを最前...
おすすめ情報