powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Объединить колонки
19 сообщений из 19, страница 1 из 1
Объединить колонки
    #36501479
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Помогите разобраться в объединением ячеек.
есть такая таблица, автоматом сгенерированная на сервере
<table border = "1">
<tr><td> </td><td>2</td><td>3</td><td>4</td><td> </td><td> </td><td> </td></tr>
<tr><td> </td><td>2</td><td>3</td><td>4</td><td> </td><td> </td><td> </td></tr>
<tr><td>1</td> <td>2</td><td>3</td><td>4</td><td>5</td><td> </td><td> </td></tr>
<tr><td>1</td> <td>2</td><td>3</td><td>4</td><td>5</td><td> </td><td> </td></tr>
<tr><td> </td><td>2</td><td>3</td><td>4</td><td> </td><td> </td><td> </td></tr>
</table>

Необходимо в строках, в которых значение в 1-й ячейки не равно &nbsp, объеденить ячейки с 5-ой и до конца, так чтоб в объедененной ячейке осталось значение из 5-й.
Я делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  <script language="javascript" type="text/javascript">
                 function reBuildTable(tbl) 
               {
                   var row;
                   var val;
                   var cnt;
                   for (var i =  1 ; i < tbl.rows.length; i++) {
                       if (tbl.rows[i].cells[ 0 ].innerHTML != ' ') {
                           val = tbl.rows[i].cells[ 4 ].innerHTML;
                           for (var j =  5 ; j < tbl.rows.childNodes.length; j++) {
                               tbl.rows[i].cells[j].removeNode(true);
                               cnt++;
                           }
                           tbl.rows[i].cells[ 5 ].colSpan = cnt;
                           tbl.rows[i].cells[ 5 ].innerHTML = val;

                       }
                   }
                
               }
               window.onload = reBuildTable(document.getElementById('<%= GridView1.ClientID %>'));
        </script> 

Это работает не работает.
Не заходит во внутренний цикл почему-то.
...
Рейтинг: 0 / 0
Объединить колонки
    #36501497
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так посмотрите алертом чему у вас равно tbl.rows.length
...
Рейтинг: 0 / 0
Объединить колонки
    #36501504
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка : tbl.rows.childNodes.length
...
Рейтинг: 0 / 0
Объединить колонки
    #36501514
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alert вообще не срабатывает
...
Рейтинг: 0 / 0
Объединить колонки
    #36501535
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка: document.getElementById("asd").rows.childNodes is undefined

поэтому и алерт не срабатывает
...
Рейтинг: 0 / 0
Объединить колонки
    #36501545
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
	var tds = tbl.getElementsByTagName('td');
	alert(tds[ 0 ].innerHTML);
...
Рейтинг: 0 / 0
Объединить колонки
    #36501549
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть разумеется getElementsByTagName не к тейблу применять, а к его деткам - тээрам
...
Рейтинг: 0 / 0
Объединить колонки
    #36501551
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EmilRegis,
Как узнать кол-во ячеек в строке?
...
Рейтинг: 0 / 0
Объединить колонки
    #36501570
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо так
Код: plaintext
1.
tbl.rows[i].getElementsByTagName('td').length
...
Рейтинг: 0 / 0
Объединить колонки
    #36501760
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EmilRegis,
переделала цикл теперь ячейки слепились правильно, но в конце добавляются новые пустые
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<script language="javascript" type="text/javascript">
               function reBuildTable(tbl) {
                   var row;
                   var val;
                   var cnt;

                   for (var i =  1 ; i < tbl.rows.length; i++) {
                       cnt =  0 ; 
                       if (tbl.rows[i].cells[ 0 ].innerHTML != ' ') {
                           val = tbl.rows[i].cells[ 4 ].innerHTML;
                           var coutCol = tbl.rows[i].getElementsByTagName('td').length;
                           for (var j =  5 ; j < coutCol; j++) {
                            cnt++;
                           }
                           tbl.rows[i].cells[ 3 + 1 ].colSpan = cnt;
                           tbl.rows[i].cells[ 3 + 1 ].innerHTML = val;

                       }
                   }
               }
     
               window.onload = reBuildTable(document.getElementById('<%= GridView1.ClientID %>'));
         </script> 

Как удалить не нужные ячейки?
...
Рейтинг: 0 / 0
Объединить колонки
    #36501775
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если вставить
Код: plaintext
1.
tbl.rows[i].cells[ 4 ].removeNode(true);
       tbl.rows[i].cells[ 5 ].removeNode(true);
после второго цикла и перед объединением, то все ОК,
когда я пытаюсь запихать tbl.rows[i].cells[j].removeNode(true); в цикл по j, то
не работает
...
Рейтинг: 0 / 0
Объединить колонки
    #36501866
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может у кого-нибудь есть идея, как удалить лишние ячейки, которые добавились после объеденения
...
Рейтинг: 0 / 0
Объединить колонки
    #36501929
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замените кстати
Код: plaintext
1.
2.
3.
4.
var coutCol = tbl.rows[i].getElementsByTagName('td').length;
на
var coutCol = tbl.rows[i].cells.length;

так правильнее))
...
Рейтинг: 0 / 0
Объединить колонки
    #36501969
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (tbl.rows[i].cells[ 0 ].innerHTML != ' ') {
       val = tbl.rows[i].cells[ 4 ].innerHTML;
       var coutCol = tbl.rows[i].getElementsByTagName('td').length;
       for (var j =  5 ; j < coutCol; j++) {
             cnt++;
	     tbl.rows[i].deleteCell(j- 1 );
}
...
Рейтинг: 0 / 0
Объединить колонки
    #36502312
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
много лишнего. Я б как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function reBuildTable(tbl) 
{
	for (var i =  0 ; i < tbl.rows.length; i++) 
	{
		if (tbl.rows[i].cells[ 0 ].innerHTML != ' ') 
		{
			var cnt = tbl.rows[i].cells.length -  4 ;
            		tbl.rows[i].cells[ 4 ].colSpan = cnt;
			while (--cnt > 0) tbl.rows[i].deleteCell(5);
		}
	}
}
но не понимаю, зачем это делать на клиенте, если можно на сервере. Лишний раз страницу колбасить.
...
Рейтинг: 0 / 0
Объединить колонки
    #36502424
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion,

Спасибо этот скрипт работает, а на сервере это сделать нельзя так как, изначально там на asp странице, динамически формируется gridview, в котором нельзя слепить ячейки, а браузер преобразовывает gridview в html -таблицу, поэтому я решила сделать это на клиенте
...
Рейтинг: 0 / 0
Объединить колонки
    #36502441
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xaly...поэтому я решила сделать это на клиенте
Можно и на сервере устанавливать атрибут колспан.
...
Рейтинг: 0 / 0
Объединить колонки
    #36504067
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion, подскажите как грамотно к этой объедененной ячейке применить стиль, конкретно выравнивание(align = center) значения по центру?
...
Рейтинг: 0 / 0
Объединить колонки
    #36504073
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос про выравнивание отпал. Спасибо всем за ответы.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Объединить колонки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]