Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2018, 13:47
Новичок на форуме
Отправить личное сообщение для zaikv Посмотреть профиль Найти все сообщения от zaikv
 
Регистрация: 13.09.2016
Сообщений: 6

Добавление разделителя в конец элементов
У меня есть таблица, если она больше некоторого количества строк или размеров я ее делю на новую и вставляю разделить после нее для принудительного переноса страницы для печати. На практике у меня таблица может занимать 3 листа, поэтому я создаю две пустые таблицы newfirstTable и newsecondTable и затем заполняю их, если требуется. В конце я добавляю их после разделителя.
function(){
                    var sourceTable = $('#sourceTable');
                    var rowsHeight = 0;
                    var separator = $('<div style="page-break-before:always"></div>');
                    var newfirstTable = $('<table id="newfirstTable" border="0" cellspacing="0" cellpadding="2" width="100%"><tbody></tbody></table>');
                    var newsecondTable = $('<table id="newsecondTable" border="0" cellspacing="0" cellpadding="2" width="100%"><tbody></tbody></table>');
                    sourceTable.find('tr').each(function(i, ln){
                        var row = $(ln);
                        rowsHeight += row.innerHeight();

                        if(i > 60 || rowsHeight > 3000)
                        {
                            newsecondTable.append(row);
                        }
                        else if(i > 20 || rowsHeight > 1300)
                        {
                            newfirstTable.append(row);
                        }
                    });

                    var firstRow = sourceTable.find('tr:first').clone();

                    if(newfirstTable.find('tr').length > 0) {
                        sourceTable.after(separator);
                        newfirstTable.find('tr:first').before(firstRow);
                        sourceTable.next(separator).after(newfirstTable);
                    }
                    if(newsecondTable.find('tr').length > 0) {
                        newfirstTable.after('<div style="page-break-before:always"></div>');
                        newsecondTable.find('tr:first').before(firstRow);
                        newfirstTable.next(separator).after(newsecondTable);
                    }
                }


Выше код работает как надо, но если строку
newfirstTable.after('<div style="page-break-before:always"></div>');

заменить на:
newfirstTable.after(separator);

То исходная таблица sourceTable схлопнется с newfirstTable, а newsecondTable перенесется нормально.
Объясните почему?
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2018, 14:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от zaikv
То исходная таблица sourceTable схлопнется с newfirstTable, а newsecondTable перенесется нормально.
Объясните почему?
Может ты полный тестовый пример сделаешь?
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2018, 14:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

zaikv,
newfirstTable.after(separator.clone());
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить К элементов в конец массива allonemoon Серверные языки и технологии 2 26.05.2017 15:10
динамическое добавление элементов поверх других Saratov64 Сайт Javascript.ru 1 09.03.2017 11:25
Добавление элементов soltx Элементы интерфейса 2 28.10.2015 07:32
Добавление обработчика событий при добавлении элементов vladimircape Events/DOM/Window 3 13.09.2012 09:57
Привильное добавление элементов с помощью js syegorius Events/DOM/Window 0 08.01.2012 09:32