我有一个div(divcontents),其中包含一个表单,该表单有几个问题和输入文本框供用户输入答案。我还有一个按钮来显示和隐藏每个输入文本框的答案(当我单击此按钮以显示/隐藏答案时,文本框将改变颜色。)
我已经创建了一个打印模块来帮助我打印这个div格式:
function printContent(){
var divno = document.getElementById("divpageno").value;
var divcontents = document.getElementById(divno).innerHTML;
var frame1 = document.createElement('iframe');
frame1.name = "frame1";
frame1.style.position = "absolute";
frame1.style.top = "-1000000px";
document.body.appendChild(frame1);
var frameDoc = frame1.contentWindow ? frame1.contentWindow : frame1.contentDocument.document ? frame1.contentDocument.document : frame1.contentDocument;
frameDoc.document.open();
frameDoc.document.write('<html><head><title>DIV Contents</title>');
frameDoc.document.write('<style>h1 { display: none;}');
frameDoc.document.write('h0 { font-size: 8.0rem; line-height: 8.0rem;}');
frameDoc.document.write('</style>');
frameDoc.document.write('</head><body>');
frameDoc.document.write(divcontents);
frameDoc.document.write('</body></html>');
frameDoc.document.close();
setTimeout(function () {
window.frames["frame1"].focus();
window.frames["frame1"].print();
document.body.removeChild(frame1);
}, 500);
return false;
}
问题是它不会向用户显示&#39;我尝试打印时回答。但是它会显示文本框颜色的变化。我必须遗漏一些非常明显的东西,但我无法弄清楚它是什么。
答案 0 :(得分:0)
我找到了解决这个问题的方法。基本上,当前方法将允许我将我的屏幕表单重建为可打印的表单,但它不包括用户输入的表单数据。这需要一个额外的javascript循环来重新读取表单数据元素到可打印的表单元素中,如下例所示:
while(document.getElementById('word_id_'+ word_page +'_'+ id_start_num))
{
frameDoc.document.getElementById('word_id_'+ word_page +'_'+ id_start_num).value = document.getElementById('word_id_'+ word_page +'_'+ id_start_num).value;
id_start_num ++;
}
这适合我。