
初めて投稿します。今、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ランキング
-
IE6.0でのオブジェクト座標の動...
-
Latexに関する質問です。
-
document.onkeydownについて
-
CSSをあとから読み込みたい。
-
onClickイベントの変更方法
-
HTMLに書き込むことなく、イベ...
-
XMLでのAttributeを持ったNode...
-
TexでΣの添え字の位置直し
-
javascriptの基本的なことだと...
-
Javascriptで定期的にF5を押す...
-
Null またはオブジェクトではあ...
-
JavaScriptで文字列の置き換え
-
<a>タグのテキストを取得
-
自動でリンクを実行する
-
jQuery UI Accordion Plugin(jQ...
-
シンプルなweb版スタンプラリー...
-
MFCのキャプション変更
-
URLのパラメータを取得しリンク...
-
if文等のブロック内での関数宣...
-
(google apps script)スプレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScript window.openで開く...
-
乗換案内 VBAで操作したい
-
onClickイベントの変更方法
-
TexでΣの添え字の位置直し
-
javascriptの基本的なことだと...
-
Latexに関する質問です。
-
サブウィンドウに背景色をつけ...
-
XMLでのAttributeを持ったNode...
-
excle VBA とweb上の検索を利用...
-
javascriptのdocument.allにつ...
-
スマホでフォームにフォーカス...
-
Null またはオブジェクトではあ...
-
ラジオボタンでreadonlyの切替え
-
文字がマウスカーソルを追従す...
-
LaTeX:数式を等号揃えにする方法
-
選択によってsubmitボタンの色...
-
UWSCでオンクリックのボタンを...
-
VBAのIE操作でframe構造のサイ...
-
DOM要素を削除しても、イベント...
-
webページ上のTabキーの動き
おすすめ情報