初めて投稿します。今、showModalDialogで困っています。
まず画面上のボタンからjsファイル内のJavaScriptのメソッドを呼び出し、
その中でshowModalDialogを使って開いた小さな窓にカレンダーを表示します。
このカレンダー画面には月を選択するセレクトボックスがあり、
このセレクトボックスで月を変更した際にカレンダーをリロードする
処理を作ろうとしています。しかしこのリロードで「オブジェクトを
指定してください」というエラーが出てしまいます。
何がいけないのでしょうか・・・?
処理内容はこんな感じ・・・
1.jsファイル内のJavaScriptメソッドのshowModalDialog呼び出し部分
window.showModalDialog("modal.html");
2.呼び出されたmodal.html内ではbodyタグを以下のようにする
<body onLoad="javascript:loadPage();">
3.2で呼び出されたmodal.html内のJavaScript、loadPage()はこんな感じ
writePage()は1のjsファイル内の別のメソッド
function loadPage()
{
writePage();
}
4.3で呼び出されたjsファイル内のJavaScript、writePage()はこんな感じ
function writePage()
{
this.document.open();
this.document.writeln("Calendar");
this.document.writeln("<select onChange=\"javascript:loadPage();\">");
this.document.writeln("<option>1月");
this.document.writeln("<option>2月");
this.document.writeln("</select>");
}
No.2ベストアンサー
- 回答日時:
test.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body onload="window.showModalDialog('modal.html')">
</body>
</html>
modal.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script language="JavaScript" src="./Calendar.js"></script>
</head>
<body onLoad="writePage()">
</body>
</html>
Calendar.js
function writePage()
{
this.document.open();
this.document.writeln("<html><head><title></title>");
this.document.writeln('<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
this.document.writeln("<script language=\"JavaScript\" src=\"./Calendar.js\"></script>");
this.document.writeln("</head><body>");
this.document.writeln("Calendar");
this.document.writeln("<select onChange=\"javascript:writePage();\">");
this.document.writeln("<option>1月");
this.document.writeln("<option>2月");
this.document.writeln("</select>");
this.document.writeln("</body></html>");
}
簡単なテストでこれなら取りあえずエラーは出ないと思います。
ハッキリ言ってなぜ補足で書かれたスクリプトでエラーが出るのか不明です。
ただ、上の例では文字化けするみたいですね。(windows98 IE6)
余分なことですが、この場合下のようにした方が簡単じゃないでしょうか。
Calendar.js
function writePage()
{
HTML = "Calendar" +
"<select onChange=\"javascript:writePage();\">"+
"<option>1月"+
"<option>2月"+
"</select>"
document.body.innerHTML = HTML
}
テストコードまで作成していただき、ありがとうございました。
確かにこのテストコードは私の環境でも動作しました。
どうやら問題はjsファイルのインポートのようです。
alertを出すだけの別のwritePage()を作って
this.document.writeln("<script>function writeAll(){alert(\"writeAll\");}</script>");
というように直書きするとちゃんとonChangeで呼ばれるのですが、これをCalendar.jsに
書き込んでインポートしようとすると、認識されていないのか、エラーがでます。
Resinを使ったウェブアプリケーションの開発での話なのですが、
環境依存の問題なのかもしれません。
差し当たり現在は別の手法で開発しようかと検討中です。どうもありがとうございました。
No.1
- 回答日時:
<body onLoad="javascript:loadPage();">でドキュメントを書いているのでドキュメントの中身は
Calendar
<select onChange=\"javascript:loadPage();\">
<option>1月
<option>2月
</select>
となっていてloadPage()は無いから「オブジェクトを指定してください」となるのでは?
この回答への補足
あれ・・・そう言われてみれば・・・(汗
しかしですね、以下のように4の処理を変更しても
やっぱり同じエラーが出てしまったのです。
自分自身(jsファイル)をインポートすること自体が
いけないのでしょうか。。?
[変更内容]
(b)jsファイルをインポート。Calendar.jsとは
showModalDialogやwritePageがあるjsファイル
(d)onChangeで呼び出すJavaScriptメソッドを変更
(a),(c),(e)今まで割愛してましたが、念のため追加
4.3で呼び出されたjsファイル内のJavaScript、writePage()はこんな感じ
function writePage()
{
this.document.open();
(a)this.document.writeln("<html><head><title></title>");
(b)this.document.writeln("<script language=\"JavaScript\" src=\"./js/Calendar.js\"></script>");
(c)this.document.writeln("</head><body>");
this.document.writeln("Calendar");
(d)this.document.writeln("<select onChange=\"javascript:writePage();\">");
this.document.writeln("<option>1月");
this.document.writeln("<option>2月");
this.document.writeln("</select>");
(e)this.document.writeln("</body></html>");
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScript window.openで開く...
-
showModalDialogで開いた画面を...
-
javascriptの基本的なことだと...
-
DOM要素を削除しても、イベント...
-
window.onloadを複数実行したい...
-
Latexに関する質問です。
-
excle VBA とweb上の検索を利用...
-
iframeのソースを取得したい
-
javascriptのdocument.allにつ...
-
ie操作 フレームのURLが...
-
Null またはオブジェクトではあ...
-
google マップ サイズ変更
-
オンマウスについて
-
ドロップダウンメニューを短縮...
-
このjavascriptのif文、条件式...
-
IEのイベントでのウインドウ...
-
Boolean型配列中のTrueの有無を...
-
ActiveXobjectが作成できない
-
C#テキストボックスの文字を配...
-
<a>タグのテキストを取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
codejump 模写コーディングgall...
-
このjavascriptのif文、条件式...
-
文字を一文字ずつ表示
-
DOM要素を削除しても、イベント...
-
FireFoxのjavascriptで自動でキ...
-
Javascriptのhtml出力についてa...
-
excle VBA とweb上の検索を利用...
-
Null またはオブジェクトではあ...
-
webページ上のTabキーの動き
-
XMLでのAttributeを持ったNode...
-
JavaScript window.openで開く...
-
ブラウザのウィンドウサイズに...
-
javascriptのdocument.allにつ...
-
javascriptの基本的なことだと...
-
responseTextについて
-
showModalDialogで開いた画面を...
-
iframeのソースを取得したい
-
removeEventListenerの必要性
-
クリッカブルマップのリンク部...
-
ラジオボタンをクリックしたい
おすすめ情報