0

我为此使用 jQuery,但我现在不能使用它(没有理由这样做)。我需要选择表格的一部分然后打印它。

我使用这段代码:

function Printon(this)
{
    newWin= window.open('','','toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=800, height=1000, left=10, top=25');
    newWin.document.write('<table>' + document.getElementsByName(this).innerHTML + '</table>');
    newWin.document.close();
    newWin.focus();
    newWin.print();
    newWin.close();
    return false;
}

然后使用名称参数调用函数时,<tr>我只得到一个文档:

12-11-12

undefined

我确定我的 HTML 是正确的,但仍然是我的 HTML:

<tr name="Print_1">
    <td>dhr Kees-jan ckc Von fleppenstein</td>
    <td>aquaduct straat 66<br>0606 OP ORK</td>
    <td>WDB-1352303696</td>
    <td>2822.00</td>
    <td><input type="button" value="Print this" onclick="Printon('Print_1')"></td>
    <td> &nbsp;</td>
</tr>
<tr name="Print_1">
    <td>-</td>
    <td> &nbsp;</td>
    <td> &nbsp;</td>
    <td>46.00</td>
    <td>2</td>
    <td>Actiesalade herfst</td>
</tr>
<tr name="Print_1">
    <td>-</td>
    <td> &nbsp;</td>
    <td> &nbsp;</td>
    <td>46.00</td>
    <td>2</td>
    <td>Actiesalade herfst</td>
</tr>

在@Muthu Kumaran 的启发下,我使用了这个:

function Printon(dit)
{
    var arr = new Array(); 
    arr = document.getElementsByName(dit); 
    var tabel = '';
    for(var i = 0; i < arr.length; i++){
         tabel += document.getElementsByName(dit)[i].outerHTML;
    }

    newWin= window.open('','','toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=800, height=1000, left=10, top=25');
    newWin.document.write('<table border=\"2\" cellpadding=\"2\" cellspacing=\"0\">' + tabel + '</table>');
    newWin.document.close();
    newWin.focus();
    newWin.print();
    newWin.close();
    return false;
}

修复它现在可以工作了!

4

2 回答 2

1

不要this在函数中用作参数。给出一个适当的变量,如名称。也document.getElementsByName将返回元素数组,因此您必须通过使用来获取值document.getElementsByName(name)[0]

试试这个,

function Printon(name)
{
    newWin= window.open('','','toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=800, height=1000, left=10, top=25');
    newWin.document.write('<table>' + document.getElementsByName(name)[0].innerHTML + '</table>');
    newWin.document.close();
    newWin.focus();
    newWin.print();
    newWin.close();
    return false;
}

工作演示:http: //jsfiddle.net/muthkum/RxNKn/1/

于 2012-11-12T09:26:26.857 回答
0

您正在传递一个字符串“Print_1”,并且在您正在使用它的函数中。“this”将不包含“Print_1”。

最好使用变量而不是这个。将您的功能更改为如下所示。

function Printon(var tableName)
                {
                    newWin= window.open('','','toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=800, height=1000, left=10, top=25');
                    newWin.document.write('<table>' + document.getElementsByName(tableName).innerHTML + '</table>');
                    newWin.document.close();
                    newWin.focus();
                    newWin.print();
                    newWin.close();
                    return false;
                }

希望这可以帮助!!!

于 2012-11-12T09:24:35.360 回答