2016-03-06 27 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

相關問題