

JavaScriptのdiv.style属性の変更が反映されない:最後のDivタグを除いたすべてのDivタグに改ページ属性を有効にするようJavaScriptで制御したいと考えています。しかし、以下のようなプログラムでは、スタイル属性が更新されず改ページが実行されてしまうため、1枚真っ白な紙が印刷されることになってしまいます。こちらの意図したように動作させるにはどうしたらよいでしょうか。
<html>
<head>
<style>
div.test {
page-break-after:always;
color:black;
}
</style>
<script type="text/javascript">
window.onload = function() {
var divs = document.getElementsByTagName('div');
for(i = divs.length - 1; i >= 0; i--){
if(divs[i].className == "test"){
divs[i].style.pageBreakAfter = "";
break;
}
}
};
</script>
</head>
<body>
<div class="test">テスト</div>
<div class="test">テスト</div>
<div class="test">テスト</div>
</body>
</html>
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だけ取り除くという方法のほうが、クラス指定の状態と内容を常に一致した状態に保てるので、よくはないでしょうか?
pageBreakAfter="auto";にしてみたところIE8でも余分なページが出力されなくなりました。ご回答ありがとうございます。
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? …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
macかwinか判別しスタイルシー...
-
確認ダイアログを次からは表示...
-
webサイトに動画をはりつけ、ク...
-
JspにIf条件を追加したいのです...
-
「ご処理進めて頂きますようお...
-
CloseとDisposeの違い
-
エクセルVBAで、MsgBox やInput...
-
VBAでループ内で使う変数名を可...
-
エクセルで、日付を入力すると...
-
Excelシート上のマクロを登録し...
-
メルカリのメルカードで買い物...
-
UMLでの例外処理
-
エクセルの画面にユーザーフォ...
-
アクセスVBA フォームのス...
-
銀行の窓口処理の件で知ってる...
-
UPS警告音を止めたい
-
リストボックスの選択解除
-
VBAでCOPYを繰り返すと、処理が...
-
Excel2007 でのチェックボック...
-
マクロで作ったボタンのサイズ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptのエラーで質問です。
-
確認ダイアログを次からは表示...
-
【JavaScript】検索がヒットし...
-
JavascriptのHTMLクラス表示に...
-
Q&A掲示板の入力フォームに文字...
-
改行をしたいが、<br>と...
-
javascript htmlの追記について
-
GoogleストリートビューAPIでイ...
-
動画の上に広告をオーバーレイ...
-
webサイトに動画をはりつけ、ク...
-
formのsubmitを押すとモーダル...
-
javascriptで複数の表示・非表...
-
$ajaxではない抽出データを表示...
-
checkboxのチェックマークカス...
-
ECサイトのリクエストパラメー...
-
JavaScriptの空欄に埋めるもの...
-
SITEINFOの書き方について
-
フォーム要素を下から上にフェ...
-
iframe内のスクリプトを親から3...
-
macかwinか判別しスタイルシー...
おすすめ情報