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.1
- 回答日時:
かなり当てずっぽうに近い回答で申し訳ないですが、ダブルクォーテーションはちゃんとエスケープしてますか?
例えば、
○ Document.writeln("<script language=\"JavaScript\">");
× Document.writeln("<script language="JavaScript">");
あともう一つ、スクリプトにスクリプトを出力させようとするといろいろ面倒なことになるので、スクリプトだけ外部ファイルに分けた方がやりやすいと思います。(使いまわしもできますしね)
この回答への補足
念のため、試してみました。
document.writeln("<script src=\"chgimage.js\"></script>");
しかし、この1行を追加しただけで、実行時に文字化けし、
正常なページが表示されませんでした。
それから、お聞きしたいのですが、
他のDocumentの関数へ外部参照するといったことはできるのでしょうか?
補足の追加になりますが、
補足の欄に書きました行を「/*」と「*/」で
コメントアウトしても、文字化けします。
その1行を取り去ると問題なく実行できます。
No.2ベストアンサー
- 回答日時:
ちょっと強引かも知れませんが、親ウィンドウのスクリプトの関数を呼び出すように、その出力するボタンのソースを以下のようにしてみてはいかがでしょうか?
writeln("<input type='button' value='前の写真' onclick='window.opener.ChangeImage(-1)'>");
writeln("<input type='button' value='次の写真' onclick='window.opener.ChangeImage(1)'>");
クリックイベントで関数を呼び出す部分に手を加え、親ウィンドウ(window.opener)のプロパティの中にある関数を指定する形にしてあります。 多分、こうした方法で、親ウィンドウ内の関数を子ウィンドウから呼び出すこともできるのではないかと思います。
参考になれば。
素晴らしいです。
無事、親ウィンドウの関数の呼び出しに成功しました。
とても参考になりました。
良い方法を教えていただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javascript_submit()完了後に処...
-
エクセルのシート上に別のシー...
-
VBAで任意のウインドウのサイズ...
-
サブウィンドウからメインウィ...
-
子ウィンドウの存在確認
-
VBの画面で、全ウィンドウを一...
-
ウィンドウ名からウィンドウオ...
-
GetAncestorのGA_ROOTとGA_ROOT...
-
EXCEL2016で最大化せずにウィン...
-
ポップアップと作業ウィンドウ...
-
ウィンドウの2重起動を防止したい
-
ワードの「作業ウィンドウ」が...
-
javascriptで開いたウィンドウ...
-
OpenCV プログラムについて
-
リンク時、親ウインドウを最前...
-
サブウィンドウに値を渡して、C...
-
デスクトップ画面を4分割するには
-
子ウィンドウの「閉じる(×)」...
-
子ウィンドウから親ウィンドウ...
-
親→子→孫サブウィンドウのフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウの存在確認
-
ポップアップと作業ウィンドウ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
デスクトップ画面を4分割するには
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウから親ウィンドウ...
-
タスクバーに非表示
-
子ウィンドウより親ウィンドウ...
-
ウィンドウ名からウィンドウオ...
-
履歴を残さないResponse.Redire...
-
1クリックでモーダルを開いてか...
-
JavaScriptで指定Windowを最大...
-
孫ウインドウを閉じたら親をリ...
-
window.Openをモーダルにできま...
-
子→親ウインドウへデータを受け...
おすすめ情報