1

最初に列の一部の(履歴)データを非表示にするテーブルがあります。テーブルを印刷すると、非表示のデータが印刷されます。これはいい。show-history履歴列のリンクをクリックすると、テーブルが展開され、非表示のデータが表示されます。次にこのビューを印刷すると、非表示のデータが取得されます。繰り返しますが、これは望ましいことです。ただし、hide-historyリンクをクリックしてから印刷すると、非表示のデータが表示されません。これは良くない!

これが私のshowHidejavascriptです

function showHide(shID) {
if (document.getElementById(shID)) {
  if (document.getElementById(shID+'-show').style.display != 'none') {
     document.getElementById(shID+'-show').style.display = 'none';
     document.getElementById(shID).style.display = 'block';
  }
  else {
     document.getElementById(shID+'-show').style.display = 'inline';
     document.getElementById(shID).style.display = 'none';
  }
}
} 

私のjspで:

 <a href="#" id="cID${comment.comment_id}-show" class="showLink" onclick="showHide('cID${comment.comment_id}');return false;">show history</a>

<TBODY id="cID${comment.comment_id}" class="more">
 .... hidden content
 <a href="#" id="cID${comment.comment_id}-hide" class="hideLink" onclick="showHide('cID${comment.comment_id}');return false;">hide history</a>
 </TBODY>

StyleScreen.css

.more {
  display: none;
}

StylePrint.css(TBODYのスタイルを設定しようとするこの試みや他の試みは機能しませんでした)

.more {
  display: block;
}
4

2 に答える 2

1

.moreのインラインスタイルをに変更しているのでdisplay:none、そのスタイルはで定義されたスタイルよりも特異性を獲得しStylePrint.cssます。つまり、の宣言でインラインスタイルをオーバーライドすることはできませんStylePrint.css

修正するには:

でインラインスタイルを削除してみて.moreくださいdocument.getElementById(shID).style.display = '';

これにより、デフォルトで状態に.more戻り、印刷モードのときにhidden非表示の状態をオーバーライドできるようになります。StylePrint.css

于 2013-01-31T22:26:10.750 に答える
1

JavaScriptは、要素をインラインでスタイル設定(非表示/表示)します。との2つのcssファイルがあると、効果がmedia="screen"ありmedia="print"ません。

あなたは(「画面」cssで)する必要があります:

.more {
    display: none;
}

.more.show {
    display: block;
}

...そしてJSを使用して、代わりに要素のクラスを変更します(「show」を追加/削除します)。

于 2013-01-31T17:43:14.130 に答える