- ベストアンサー
JavaScriptのdiv.style属性の変更が反映されない:最後
- JavaScriptでdiv要素のstyle属性を変更しても反映されない問題について解決方法を知りたいです。
- JavaScriptを使用してdiv要素のstyle属性を変更しようとしていますが、最後のDivタグ以外のすべてのDivタグに改ページ属性を有効にする方法がわかりません。
- 現在のプログラムでは、スタイル属性が更新されずに改ページが実行されてしまい、印刷時に真っ白なページが追加されてしまいます。正しく動作させるためにはどのような方法がありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「印刷プレビュー」でしか確認していませんが… 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だけ取り除くという方法のほうが、クラス指定の状態と内容を常に一致した状態に保てるので、よくはないでしょうか?
その他の回答 (2)
- think49
- ベストアンサー率59% (285/482)
> 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
- babu_baboo
- ベストアンサー率51% (268/525)
break; のまえに、 alert(i); をいれてみると
補足
質問のコードの場合は「2」と表示されます
お礼
pageBreakAfter="auto";にしてみたところIE8でも余分なページが出力されなくなりました。ご回答ありがとうございます。