|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
Создание и объединение ячеек в таблице06.04.2018, 15:20. Показов 13143. Ответов 8
Метки нет (Все метки)
Создала таблицу через цикл и пытаюсь объединить ячейки, при объединении часть ячеек выходит за пределы таблицы. Подскажите, пожалуйста как это можно исправить?
Код.
0
|
||||||
| 06.04.2018, 15:20 | |
|
Ответы с готовыми решениями:
8
Объединение ячеек в таблице Объединение ячеек в таблице
|
|
|
||||||
| 06.04.2018, 15:58 | ||||||
|
Katerina1993, можно ввести дополнительную функцию, которая будет вычислять количество ячеек для строк, точнее модификацию количества.
i - индекс строки r - строка, с которой начинается "большая дырка" w - количество столбцов в дырке(colspan) h - количество строк в дырке (rowspan) Из этого рассчитывается насколько надо уменьшить количество ячеек в текущей строке.
0
|
||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 06.04.2018, 18:16 [ТС] | ||||||
|
Если я поменяю параметры и поставлю объединение ячеек со 2 строки и 10 колонки.
0
|
||||||
|
|
||||||||||||
| 06.04.2018, 18:48 | ||||||||||||
Сообщение было отмечено Katerina1993 как решение
Решение
А еще лучше, положение дырки вынеси в параметры функции. Вот так.
1
|
||||||||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 08.04.2018, 15:08 [ТС] | ||||||
|
А если например мне нужно сделать в нескольких местах объединение. Координаты и количество ячеек (которые нужно объединить) указаны в массиве. Как в этом случае быть? У меня например происходит дублирование ячеек.
0
|
||||||
|
|
|||||||
| 10.04.2018, 22:33 | |||||||
|
Суть проблемы состояла в том, что если слева от новой дырки есть другая дырка, то положение этой самой новой дырки сдвигается на ширину той что слева(очень сложно внятно объяснить). То есть если дырка должна быть в пятой колонке, а слева есть другая дырка шириной в три колонки, то новую надо ставить не на пятой ячейке строки, а только на второй или третьей, в зависимости о того, находится ли дырка слева на этой же строке или выше. Решил двумя способами. Первый состоит в том, что таблица сначала заполняется ячейками полностью. Потом устанавливаются дырки слева-направо, причем ячейка для новой дырки вычисляется по физическому положению. То есть, если надо поставить в пятый столбец, а ширина столбца - 50пх, плюс два пикселя на боковых границах, соответственно умножаем 52 на 5 и ищем ячейку в этом положении. После чего все ячейки вылезшие за расчетную ширину таблицы удаляются. Правда в этом случае были проблемы, когда страница грузилась в масштабированную вкладку. Там удалялись лишние столбцы почему-то. Второй способ построен на точном расчете (функция createTable) и должен работать правильно, но тоже не могу гарантировать, что будет так работать во всех случаях. Так что надо тестировать.
1
|
|||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 12.04.2018, 22:30 [ТС] | |
|
Спасибо большое, скрипт отлично работает только вот у меня возникла проблема, идентифика́тор проставляет не так как мне нужно, все ячейки объединенные colspan считаются как одна. Например (предыдущая ячейка - 1_1), (colspan="3" - 1_2), (следующая ячейка - 1_3), а должно быть вот так (предыдущая ячейка - 1_1), (colspan="3" - 1_2, 1_3, 1_4), (следующая ячейка - 1_5), то есть если объединено три ячейки то они должны и считаться за три ячейки (а не за одну). Иначе таблица в конце не сходится по id. Подскажите пожалуйста как это сделать? На всякий случай вот скриншот.
P.S. Раньше работала с Flash там это делалось куда проще чем на JS. Интересно, то что rowspan считает каждую ячейку, не то что colspan.
0
|
|
|
|
||||||
| 13.04.2018, 13:06 | ||||||
|
Katerina1993, я там выше писал о двух методах расчетов, которые можно использовать. В данном случае это тоже актуально. Проще использовать первый способ, где индекс колонки для конкретной ячейки определяется по ее положению в строке, то есть по количеству пикселей между левыми границами строки и ячейки. Метод достаточно прост: Вычисляешь ширину ячейки, по всей видимости в твоем случае это будет 52 пикселя, поскольку 50 ты установила сама, плюс еще два на границы слева и справа. Но лучше проверить.
Дальше у элементов, в том числе у ячеек, есть свойство offsetLeft, оно покажет отступ от левой границы родительского контейнера, для ячейки это будет строка. Ну и разделив этот отступ на ширину ячейки можно узнать, сколько столбцов находится слева от нее, это и будет индекс текущего столбца, если считать индексы с нуля (как они обычно и считаются). Что касается другого метода - чисто арифметического - то он получится достаточно сложным и у меня сейчас в голове нет четкого представления об алгоритме, который его реализует, тут покумекать надо, может потом и займусь, но ничего не обещаю. Добавлено через 12 часов 35 минут Katerina1993, в принципе, если надо чтобы ячейки стояли на своих местах, то всю задачу можно было решить гораздо проще - делая невидимыми ячейки, места которых заняты дырками, вместо того, чтобы создавать меньше ячеек в таких строках.
1
|
||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 15.04.2018, 21:49 [ТС] | |
|
Спасибо за помощь, скрипт я уже протестировала и он отлично работает
0
|
|
| 15.04.2018, 21:49 | |
|
Помогаю со студенческими работами здесь
9
Объединение строк и ячеек в таблице
Отчет объединение ячеек в таблице Объединение ячеек в одной таблице Объединение ячеек в таблице Mysql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|