- ベストアンサー
javascriptでカレンダー作成時にwriteができない
- JavaScriptでカレンダーを作成している際に、idoc.writeでlinkとbodyを書き込めずに困っています。
- 退職者から引き継いだPCで、idoc.writeがうまく機能しない問題が発生しています。
- 環境回りも確認しましたが、解決策が見つかりません。どのようにすれば書き込めるようになるでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>>別のファイルで処理している可能性があります。 >残念ながら、そういった処理は行われていないようです。 逆に他のファイルから そのファイルが参照されている可能性もあります。 そのファイルの拡張子が「js」になってませんか?
その他の回答 (6)
- superside0
- ベストアンサー率64% (461/711)
>>idoc = target.contentDocument; >↑良く分かりませんが、「target」変数に何か代入されてますか? target変数への代入を探されているようですが、No2に補足に var target = parent.document.getElementById( id ); .. idoc = target.contentDocument; とあるので、これのことですよね。 前後が不明ですが、document.writeでなくオブジェクトの.writeを使っているということは 親ウィンドウから、iframeの子ウィンドウのコンテンツを触っているのでしょう。 本題の、linkやbodyができない件ですが、 ブラウザのJavaScriptのデバッガを使って、どこで止まっているか確認してみては どうですかね。
お礼
デバッガでは、直前まで変数calにlinkもbodyも保持していますが、writeすると消失してしまいます。
- amanojaku1
- ベストアンサー率54% (265/488)
>ファイル名は「ifrmCalendar.js」です。 「js」ファイルはライブラリーのような物で、本体から参照して使われます。 拡張子が「html、htm」(大文字の場合もあります)のファイルの中で「ifrmCalendar.js」を参照している本体(ファイル)があるハズです。
- superside0
- ベストアンサー率64% (461/711)
cal 変数の代入文中に、 </script> という文字列が2箇所ありますが これを このJavaScriptの終端と誤認識してしまっているのかもしれません。 </script> ↓ </s" + "cript のように分解してみてはどうでしょう?
お礼
残念ながら、影響なしでした。
- amanojaku1
- ベストアンサー率54% (265/488)
>再確認したのですが、上記以外の処理はしていないようです。 >どうしたものか、頭を抱えております・・・。 別のファイルで処理している可能性があります。 ファイルの先頭の方で下記のような感じで別ファイルを参照してないかチェックしてみて下さい。 <script language=JavaScript type=Text/JavaScript src="ファイル名"></script>
お礼
残念ながら、そういった処理は行われていないようです。
- amanojaku1
- ベストアンサー率54% (265/488)
>idoc = target.contentDocument; ↑良く分かりませんが、「target」変数に何か代入されてますか?
お礼
会社を出てしまったのでPG確認出来ませんが、先の補足に書いた以外の処理はなかったかと思います。 が、ひょっとするとparent側で何かしているかもしれません。 明日、確認して補足に記載します。 よろしくお願いいたします。
補足
再確認したのですが、上記以外の処理はしていないようです。 どうしたものか、頭を抱えております・・・。
- amanojaku1
- ベストアンサー率54% (265/488)
>idocに書き込みしようとした際に、linkとbodyが書き込めず 通常「write」メソッドは「document」オブジェクトの「write」メソッドを使うものですが? document.write(~);
お礼
ご回答ありがとうございます。 補足コメントにもう少しPGを書きました。 知見をお借りできますと幸いです。
補足
PG抜けていて申し訳ありません。 以下が全体の流れになります。 -------------------- var target = parent.document.getElementById( id ); var idoc = null; idoc = target.contentDocument; var cal="<title>カレンダ</title><script type='text/javascript'>var arGYear = new Array('1912','1926','1989');var arGDate = new Array('19120731','19261225','19890108');var arGengo = new Array('大正','昭和','平成');var arGengoI = new Array('T','S','H');var arHoliday = new Array('20170204','20170205','20170210','20170211','20170212','20170218','20170219','20170225','20170226','20170304','20170305','20170311','20170312','20170318','20170319','20170320','20170325','20170326','20170327','20170401','20170402','20170403','20170404','20170405','20170406','20170407','20170408','20170409','20170410','20170411','20170412','20170413','20170414','20170415','20170416','20170417','20170418','20170419','20170420','20170421','20170422','20170423','20170424','20170425','20170426','20170427','20170428','20170429','20170430','20170501');</script><script type='text/javascript' src='./js/ifrmCalendar.js'></script><link href='css/ifrmCalendar.css' rel='stylesheet' type='text/css' /><body></body>"; idoc.write(cal); -------------------- 私自身はjavascriptに詳しくなく、この書き方が妥当なのかが判別出来ず、引き継いだものがそうなっていたとしけ言えない状況です。 よろしくお願いいたします。
お礼
色々と試していると、VisualStudioのデバッグではなくIISから見ると動くことが判明しました。javascript単体の話ではなさそうなので、以下で新規質問とさせて頂きました。 ------------------------------ VisualStudioとIISでのJSの挙動 https://okwave.jp/qa/q9363254.html ------------------------------ 何度もご回答頂いたamanojaku1様にベストアンサーを付け、ここではクローズさせて頂きます。 よろしければ新規質問もご確認願います。
補足
ファイル名は「ifrmCalendar.js」です。 内部参照のような形式なのかと思いますが、よく分かりません・・・。