2016-03-06 67 views
-1

我将首先解释什么,我试图做的:复制表行到另一表中删除从父表中的行

  1. 复制一个表到另一个其中I M动态创建。
  2. 打印动态创建的表。

但是,一旦我将一个表复制到另一个表,它会从父表中删除行。 请参看下面的代码,我已经做了:

$('#anchorPrint').click(function() 
    {   
     //create a new table dynamically.   
     $("<table>", {id: "tblTransactionHistory_copy",'display':'none'}).appendTo("body"); 
     $('#tblTransactionHistory_copy').append("<tbody></tbody>"); 

     //copy the main table rows to dynamically created one. 
     var rows = $('#tblTransactionHistory > tbody > tr'); 
     $("#tblTransactionHistory_copy > tbody").append(rows); 


     var divToPrint=document.getElementById("tblTransactionHistory_copy"); 
     newWin= window.open(""); 
     newWin.document.write(divToPrint.outerHTML); 
     newWin.print(); 
     newWin.close(); 
     return false; 
    }); 

回答

1

不要让任务过于复杂,使用.clone()代替。

$('#anchorPrint').click(function(){   
    var tblCopy = $("body").append($('#tblTransactionHistory').clone().attr("id","tblTransactionHistory_copy")); 
    var divToPrint = tblCopy.get(0); 
    var newWin= window.open(""); 
    newWin.document.write(divToPrint.outerHTML); 
    newWin.print(); 
    newWin.close(); 
    return false; 
}); 

之所以你的代码不工作是,如果你通过任何现有元素的document无论是作为selector或作为element,将从原来的位置被移出,将获得附加到目标元素。

+0

您好先生, 上面的代码不会取得新表“tblTransactionHistory_copy”。因为上面的代码'document.getElementById('tblTransactionHistory_copy')'返回null。 我想新表将不复存在,因为我想在某些变化我打印之前。 总之我想打一个主表的副本,这样我可以在打印前在操纵它的东西。 你有什么解决方案吗? 在此先感谢! – user2746466

+0

@ user2746466忘记将克隆的元素附加到主体。你现在可以检查代码吗? –

+0

我现在做了,我可以得到我新创建的表的对象。 但是现在新的问题是,每次当得到执行该代码我收到与相同ID创建一个新表。我已经将这些代码写入了一个按钮单击,并且每次单击按钮都会创建该表。所以我现在有多个表在身体相同的Id。 我该如何阻止? – user2746466