将包含数据的div表单打印到页面

时间:2015-03-21 06:22:10

标签: javascript html css printing

我有一个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;我尝试打印时回答。但是它会显示文本框颜色的变化。我必须遗漏一些非常明显的东西,但我无法弄清楚它是什么。

1 个答案:

答案 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 ++;
}

这适合我。