• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptのdiv.style属性の変更が反映されない:最後)

JavaScriptのdiv.style属性の変更が反映されない:最後

このQ&Aのポイント
  • JavaScriptでdiv要素のstyle属性を変更しても反映されない問題について解決方法を知りたいです。
  • JavaScriptを使用してdiv要素のstyle属性を変更しようとしていますが、最後のDivタグ以外のすべてのDivタグに改ページ属性を有効にする方法がわかりません。
  • 現在のプログラムでは、スタイル属性が更新されずに改ページが実行されてしまい、印刷時に真っ白なページが追加されてしまいます。正しく動作させるためにはどのような方法がありますか?

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

「印刷プレビュー」でしか確認していませんが… Fx(3.5)では、スクリプトを実行しなくても、最後の白紙は出力されません。 (pageBreakなんて、使ったこと無かったので思わず調べちゃいました) >divs[i].style.pageBreakAfter = ""; だと、どうもCSSの指定が残ってしまうようなので、明示的に"auto"か"avoid"を指定することで、最後の白紙が出なくなるようです。 (理由はよくわかりません) ただし、IE(6)ではavoidには対応していないようで、指定するとエラーがでてしまいます。 なので、"auto"指定にしておくのがよさそう。 もっとも、ご提示のサンプルのような場合であれば、page-breakを指定するクラスだけ別に作っておいて  div.pagebreak { page-break-after:always; } HTMLは、 <div class="test pagebreak">テスト</div> のようにしておいて、 classNameからpagebreakだけ取り除くという方法のほうが、クラス指定の状態と内容を常に一致した状態に保てるので、よくはないでしょうか?

Tank2005
質問者

お礼

pageBreakAfter="auto";にしてみたところIE8でも余分なページが出力されなくなりました。ご回答ありがとうございます。

その他の回答 (2)

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

> divs[i].style.pageBreakAfter = ""; 「element.style.property = ''; でスタイルを初期値に戻す事ができる」という規定はどこにもないので実装を変えた方がいいような気がします。 例えば、element.className = ''; あるいは、document.styleSheets を書き換える方法など。 onclickを使わずにイベント処理をする方法について。(1/2) | OKWave http://okwave.jp/qa/q5931597.html 掲示板/スタイルシート質問板/テキストボックスのスタイル初期化 - TAG index Webサイト http://www.tagindex.com/cgi-lib/q3bbs/patio.cgi?mode=view&no=1373

回答No.1

break; のまえに、 alert(i); をいれてみると

Tank2005
質問者

補足

質問のコードの場合は「2」と表示されます

関連するQ&A