Javascript 打印时,将元素设置为“内联显示”,该元素设置为“无”
我有一个表,它最初在列中隐藏一些(历史)数据。 打印表格时,会打印隐藏的数据。这很好。 当我单击历史记录列中的Javascript 打印时,将元素设置为“内联显示”,该元素设置为“无”,javascript,css,dom,Javascript,Css,Dom,我有一个表,它最初在列中隐藏一些(历史)数据。 打印表格时,会打印隐藏的数据。这很好。 当我单击历史记录列中的show history链接时,表将展开并显示隐藏的数据。如果我打印这个视图,我会得到隐藏的数据。这也是需要的。 但是,当我单击隐藏历史记录链接然后打印时,我不会得到隐藏的数据。这不好 这是我的showHide javascript function showHide(shID) { if (document.getElementById(shID)) { if (document.
show history
链接时,表将展开并显示隐藏的数据。如果我打印这个视图,我会得到隐藏的数据。这也是需要的。
但是,当我单击隐藏历史记录
链接然后打印时,我不会得到隐藏的数据。这不好
这是我的showHide javascript
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>
StylePrint.css(尝试设置TBODY样式的尝试和其他尝试均无效)
JavaScript将以内联方式设置(隐藏/显示)元素的样式。拥有两个css文件,分别带有
media=“screen”
和media=“print”
,将不会产生任何效果
您需要(在“屏幕”css中):
。。。使用JS,改为更改元素的类(添加/删除“show”)。因为您正在更改
。更多的内联样式改为显示:无
,那么该样式比StylePrint.css
中定义的样式更具特殊性。也就是说,您不能用StylePrint.css
中的声明覆盖内联样式
要修复:
尝试使用document.getElementById(shID).style.display=''从中删除内联样式。更多代码>
这将默认.more
返回到隐藏状态,并允许您在打印模式下使用StylePrint.css
覆盖隐藏状态。如何以及在何处加载StylePrint.css
?只是一个猜测,但是如果您已经将.more
的内联样式更改为显示:none
,那么您应该在主CSS之后加载它,并使用以下
也可以加载它。然后,该样式将比StylePrint.CSS
中定义的样式更具特殊性。尝试使用document.getElementById(shID).style.display=''从中删除内联样式。更多代码>隐藏时。将我的js更改为document.getElementById(shID.style.display='';(将“无”更改为“”)成功。我还从StylePrint.css中删除了.more。我如何标记一个被接受的答案?我添加了上述评论作为答案。很高兴它起作用了。这可能会起作用,但我试着把上面我的评论中所说的“无”改为“无”,这很有效。
.more {
display: none;
}
.more {
display: block;
}
.more {
display: none;
}
.more.show {
display: block;
}