需要指出的是这种方法提供一个打印前和打印后的事件onbeforeprint、onafterprint。可以在打印前的时候重新编辑一些格式,专门送去打印,打印后又处理回来。
function window.onbeforeprint()
{
//将一些不需要打印的隐藏
}
function window.onafterprint()
{
//放开隐藏的元素
}
通过这两个方法,就可以实现页面的部分打印
HTML如下:
</table>
此时<tr class="noprint">是不打印的tr
下面是media的相关
要打印页面指定内容可以通过使用样式表来实现,楼上的回答虽然也可以实现只打印部分内容,但前提是打印的内容都在你做的标记之间,在某些情况下也不尽如意,楼主不妨试试以下方法:
<style type='text/css'>
@media print {
input, textarea, select, a, .NoPrint { display: none; }
}
</style>
以上样式设置所有输入控件,选择控件,超链接和指定类型的元素在打印时不显示,即是不打印,要想不打印的元素都只加上样式类“NoPrint”即可,如:
<body>
<div>在这里放入任意需要打印的内容<span class='NoPrint'>此内容不打印!</span><span style='color:red; font-size:20px;'>这是大号字!</span></div>
<div class='NoPrint'>说明:此信息不会被打印。</div>
</body>
在打印时调用这个方法就可以了!~
//处理打印部分页面信息的方法
function doPrint() {
bdhtml=window.document.body.innerHTML; //获得body标签内的全部html代码
sprnstr="<!--startprint-->"; //声明一个字符串,用于表示打印的起始位置
eprnstr="<!--endprint-->"; //标示打印的结束位置
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); //查找打印的起始字符串并加上17,因为<!--startprint-->的长度为17,所以要加17,这样打印时不会把标示打印出来
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //和上边的意思差不多
window.document.body.innerHTML=prnhtml; //通过window对象得到body对象并将当前窗体的内容设置为要打印起始标示符和结束标示符之间的内容,这样打印出来就只有需要的部分,而其他没用的信息都不会有的
window.print();
}
来得到需要打印的内容,所以在你的html代码中应该有这两个字符串的出现,至于位置就像这样:比如我
要打印当前页面中一个<table></table>中所有的信息,那么你应该在这个<table>标签前加入起始字符串
在</table>结束标签后加入结束标示的字符串。就像这样<!--startprint--><table></table><!--endprint-->
此处需要注意一个地方:<!--startprint-->这个和<table>标签之间不要有空格回车这样的空字符
否则程序运行会有问题。