如何使用纯Javascript选择表的一部分

时间:2012-11-12 09:19:20

标签: javascript html html-table css-selectors

我使用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;
}

修正了它现在有效!

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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;
                }

希望这有帮助!!!