• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptでwriteできない)

javascriptでカレンダー作成時にwriteができない

このQ&Aのポイント
  • JavaScriptでカレンダーを作成している際に、idoc.writeでlinkとbodyを書き込めずに困っています。
  • 退職者から引き継いだPCで、idoc.writeがうまく機能しない問題が発生しています。
  • 環境回りも確認しましたが、解決策が見つかりません。どのようにすれば書き込めるようになるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

>>別のファイルで処理している可能性があります。 >残念ながら、そういった処理は行われていないようです。 逆に他のファイルから そのファイルが参照されている可能性もあります。 そのファイルの拡張子が「js」になってませんか?

cra23mog
質問者

お礼

色々と試していると、VisualStudioのデバッグではなくIISから見ると動くことが判明しました。javascript単体の話ではなさそうなので、以下で新規質問とさせて頂きました。 ------------------------------ VisualStudioとIISでのJSの挙動 https://okwave.jp/qa/q9363254.html ------------------------------ 何度もご回答頂いたamanojaku1様にベストアンサーを付け、ここではクローズさせて頂きます。 よろしければ新規質問もご確認願います。

cra23mog
質問者

補足

ファイル名は「ifrmCalendar.js」です。 内部参照のような形式なのかと思いますが、よく分かりません・・・。

その他の回答 (6)

回答No.7

>>idoc = target.contentDocument; >↑良く分かりませんが、「target」変数に何か代入されてますか? target変数への代入を探されているようですが、No2に補足に var target = parent.document.getElementById( id ); .. idoc = target.contentDocument; とあるので、これのことですよね。 前後が不明ですが、document.writeでなくオブジェクトの.writeを使っているということは 親ウィンドウから、iframeの子ウィンドウのコンテンツを触っているのでしょう。 本題の、linkやbodyができない件ですが、 ブラウザのJavaScriptのデバッガを使って、どこで止まっているか確認してみては どうですかね。

cra23mog
質問者

お礼

デバッガでは、直前まで変数calにlinkもbodyも保持していますが、writeすると消失してしまいます。

回答No.6

>ファイル名は「ifrmCalendar.js」です。 「js」ファイルはライブラリーのような物で、本体から参照して使われます。 拡張子が「html、htm」(大文字の場合もあります)のファイルの中で「ifrmCalendar.js」を参照している本体(ファイル)があるハズです。

回答No.4

cal 変数の代入文中に、 </script> という文字列が2箇所ありますが これを このJavaScriptの終端と誤認識してしまっているのかもしれません。 </script> ↓ </s" + "cript のように分解してみてはどうでしょう?

cra23mog
質問者

お礼

残念ながら、影響なしでした。

回答No.3

>再確認したのですが、上記以外の処理はしていないようです。 >どうしたものか、頭を抱えております・・・。 別のファイルで処理している可能性があります。 ファイルの先頭の方で下記のような感じで別ファイルを参照してないかチェックしてみて下さい。 <script language=JavaScript type=Text/JavaScript src="ファイル名"></script>

cra23mog
質問者

お礼

残念ながら、そういった処理は行われていないようです。

回答No.2

>idoc = target.contentDocument; ↑良く分かりませんが、「target」変数に何か代入されてますか?

cra23mog
質問者

お礼

会社を出てしまったのでPG確認出来ませんが、先の補足に書いた以外の処理はなかったかと思います。 が、ひょっとするとparent側で何かしているかもしれません。 明日、確認して補足に記載します。 よろしくお願いいたします。

cra23mog
質問者

補足

再確認したのですが、上記以外の処理はしていないようです。 どうしたものか、頭を抱えております・・・。

回答No.1

>idocに書き込みしようとした際に、linkとbodyが書き込めず 通常「write」メソッドは「document」オブジェクトの「write」メソッドを使うものですが? document.write(~);

cra23mog
質問者

お礼

ご回答ありがとうございます。 補足コメントにもう少しPGを書きました。 知見をお借りできますと幸いです。

cra23mog
質問者

補足

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に詳しくなく、この書き方が妥当なのかが判別出来ず、引き継いだものがそうなっていたとしけ言えない状況です。 よろしくお願いいたします。

関連するQ&A