2013-11-30 6 views
-1

Как я могу напечатать несколько div с тем же идентификатором, потому что Я зацикливаю div, и он сохраняет id=PrintArea все время.Multiple div printing

Я использую PrintArea для печати своего div.

и с этим JS:

function printDiv() { 
      var divToPrint = document.getElementById('printArea'); 
      newWin= window.open(); 
      newWin.document.write(divToPrint.innerHTML); 
      newWin.location.reload(); 
      newWin.focus(); 
      newWin.print(); 
      newWin.close(); 
     } 
+1

Ваш вопрос слишком расплывчатый. HTML-документ не должен содержать один и тот же идентификатор для элемента дважды. Элементы/идентификаторы должны быть уникальными в документе. Вы говорите о переписывании/замене div? – vogomatix

ответ

1

Дайте имя класса для дивы для печати, то петля:

var divsToPrint = document.getElementsByClassName('printArea'), n; 

for (n = 0; n < divsToPrint.length; n++) { 
    printDiv(divsToPrint[n]); 
} 

function printDiv(div) { 
    var newWin= window.open('', 'win'); 
    newWin.document.write(div.innerHTML); 
    newWin.location.reload(); 
    newWin.focus(); 
    newWin.print(); 
    newWin.close(); 
} 

Также посетите на MDN, чтобы посмотреть, как window.open() называется.

Однако было бы намного проще, если бы вы использовали таблицу стилей с атрибутом media="print". В этой таблице стилей должно быть три класса: .noprint {display: none;} для всего содержимого, которое не должно быть напечатано, .printable {display: none;} для тех разделов, которые должны быть напечатаны, и .print {display: block;}, который переключается с .printable, когда на самом деле печатается.