0

我正在尝试创建一个 javascript 调用,onclick 将创建页面特定部分的新窗口,并打印它。

为此,我正在修改其他人的 SF 答案,试图做类似的事情

<div class="patienspecials clearfix" id="print_div1">
    <h1>Bla bla bla</h1> 
    <a href="#" onclick="printInfo(print_div1)"><img 
        class="alignnone size-full wp-image-6196" alt="print-icon" 
        src="#" width="92" height="28" /></a>
</div>

我正在尝试将 div print_div1 作为参数传递给这个函数——

<script type="text/javascript">
function printInfo(ele) {
    var openWindow = window.open("", "title", "attributes");
    openWindow.document.write(document.getElementById(ele));
    openWindow.document.close();
    openWindow.focus();
    openWindow.print();
    openWindow.close();
}
</script>

但是,当我运行脚本时,打印命令只是创建一个带有文本“null”的新页面。

我很确定我在 getElementById 上做错了什么,你们对如何使这项工作有任何想法吗?仍然是菜鸟,将不胜感激!

干杯

4

2 回答 2

3

printInfo(print_div1)将传递 ID 为 的元素print_div1,而不是传递字符串'print_div1'

只需更新您的 JavaScript 以使用正在传递的元素,而不是尝试将其用作字符串 ID 来查询:

<script type="text/javascript">
function printInfo(ele) {
    var openWindow = window.open("", "title", "attributes");
    //no longer need to select the element by ID, just use it
    openWindow.document.write(ele);
    openWindow.document.close();
    openWindow.focus();
    openWindow.print();
    openWindow.close();
}
</script>

如果您出于某种原因真的想使用document.getElementById(),只需确保在您的内联事件中引用字符串 id:

<div class="patienspecials clearfix" id="print_div1">
    <h1>Bla bla bla</h1> 
    <!-- Notice the quotes around 'print_div1' -->
    <a href="#" onclick="printInfo('print_div1')"><img 
        class="alignnone size-full wp-image-6196" alt="print-icon" 
        src="#" width="92" height="28" /></a>
</div>

更改其中一个(但不是两个)应该可以正常工作。希望这可以帮助!

于 2013-09-22T05:49:55.220 回答
0

这是因为您传递的是未定义的变量print_div1而不是字符串。利用:

<a onclick="printInfo('print_div1')">...</a>

于 2013-09-22T05:54:00.103 回答