【问题标题】:Print Div content only without losing other functionality仅打印 Div 内容而不会丢失其他功能
【发布时间】:2016-09-29 01:40:29
【问题描述】:

我有一个页面,我必须只打印 div 内容,该内容是动态的,并且会根据下拉值而有所不同。现在,我想打印这个内容,我能够成功地使用

function printDiv(divId){
    var orginalPage= document.body.innerHTML;
    var printDiv= document.getElementById(divId).innerHTML;
    document.body.innerHTML = printDiv;
    window.print();
    document.body.innerHTML = orginalPage;
}

但我的问题是,当我打印完 div 并返回到实际页面时,下拉值正在重置为默认值。我希望该值与打印 div 之前选择的值相同。例如,我从下拉列表中选择了“xyz”,然后在打印我的 div 内容后,我希望默认选择 xyz。

我将为此下拉选项迭代一个列表。像这样的

<select id="reason" >
<logic:iterate id="hs" name="hslist" type="hsData">
<option value="">select a reason </option>
<option value="<bean write name='hs' property='hsReasonId'/>">
<bean write name="hs" property="hsReasonDesc"/></option>
</logic>
</select>

有人可以帮忙解决这个问题吗...

【问题讨论】:

  • 你能详细说明....任何代码sn-p都非常感谢
  • 所以你说将页面正文保留在新的隐藏 div 中并打印所需的 div?
  • 那样我很累,但是当我打印 div 时,内容没有正确对齐,看起来一团糟......
  • 也许你应该专注于此

标签: javascript java html jsp jstl


【解决方案1】:

你可以使用select元素的selected属性来设置默认值

【讨论】:

  • 我希望值是用户在打印 div 之前选择的值...我可以使用 selected 属性来做到这一点吗?
【解决方案2】:

您可以通过一个小的更改来解决。对于您想要打开一个额外的窗口并在您想要打印的窗口中分配 html。

function printDiv(divId){
var printDiv= document.getElementById(divId).innerHTML;
var myWindow = window.open("", "", "width=800,height=500");
myWindow.document.write(printDiv);
myWindow.print();
}

【讨论】:

【解决方案3】:

当您将 innerHTML 分配回正文时,您之前选择的值会丢失。尝试先打印 body 的 innerHTML。我想您将能够弄清楚为什么您的下拉菜单没有被填充回来。

【讨论】:

  • 请说明您如何打印部分 html
  • 在你的代码中试试这个。 var printBody=document.body.innerHTML;winow.print(printBody);
猜你喜欢
  • 1970-01-01
  • 2015-03-16
  • 2012-11-11
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2018-05-29
相关资源
最近更新 更多