Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2016, 21:42
Новичок на форуме
Отправить личное сообщение для PILATONE Посмотреть профиль Найти все сообщения от PILATONE
 
Регистрация: 14.06.2016
Сообщений: 4

Перебор строки таблицы и объединение
Доброго времени суток!

Подскажите пожалуйста как перебрать таблицу и "объединить" ячейки в строке с одинаковым контентом при помощи JavaScript.

Есть скрипт который объединяет ячейки в столбиках, но так как я пока не очень дружу с JS переписать его не могу

Вот кстати он:

var x = document.getElementById("table").rows;
		var i, j, z;
		var a = 0;

		for (i = x[0].cells.length - 1; i > 0; i--) {
			for (j = 2; j < x.length; j++) {

				if (x[j].cells[i].textContent == x[j - 1].cells[i].textContent) {
					if (x[j].cells[i].textContent != "") {
						a++;

						if (j == (x.length - 1)) {
							for (z = 0; z < a; z++) {
								x[j - z].deleteCell(i);
							}
							x[j - a].cells[i].setAttribute("rowSpan", (a + 1));
							a = 0;
						}
					}
				} else {

					if (a >= 1) {
						for (z = 1; z < (a + 1); z++) {
							x[j - z].deleteCell(i);
						}
						x[j - (a + 1)].cells[i].setAttribute("rowSpan", (a + 1));
						a = 0;
					}
				}
			}
		}


Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2016, 21:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

PILATONE,
пример минимальный таблица до и после?
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2016, 22:05
Новичок на форуме
Отправить личное сообщение для PILATONE Посмотреть профиль Найти все сообщения от PILATONE
 
Регистрация: 14.06.2016
Сообщений: 4

рони,
Например такая табличка с подключенным скриптом и без:

мне же надо чтоб объединялись ячейки не в столбцах, а в строках.

вложения с картинками ниже.

<table id="table">
	<tr>
		<td></td>
		<td>один</td>
		<td>два</td>
		<td>три</td>
		<td>четыре</td>
		<td>пять</td>
	</tr>
	<tr>
		<td>два</td>
		<td>3</td>
		<td>3</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
	<tr>
		<td>три</td>
		<td>3</td>
		<td>8</td>
		<td>5</td>
		<td>9</td>
		<td>9</td>
	</tr>
	<tr>
		<td>четыре</td>
		<td>2</td>
		<td>8</td>
		<td>5</td>
		<td>9</td>
		<td>5</td>
	</tr>
	<tr>
		<td>пять</td>
		<td>2</td>
		<td>5</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
</table>
Изображения:
Тип файла: png 2 — копия.png (6.3 Кб, 5 просмотров)
Тип файла: png 2 — копия — копия.png (7.0 Кб, 4 просмотров)

Последний раз редактировалось PILATONE, 14.06.2016 в 22:27.
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2016, 22:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

объединение ячеек таблицы с одинаковым содержанием
PILATONE,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  td{
    border: 1px solid #008000;
    text-align: center;
  }

 </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll("tr");
    [].forEach.call(a, function(c) {
        var a = c.querySelectorAll("td");
        [].reduce.call(a, function(a, b) {
            if (b.textContent != a.textContent) return b;
            a.colSpan++;
            c.removeChild(b);
            return a
        })
    })
});
  </script>
</head>

<body>
<table id="table">
	<tr>
		<td></td>
		<td>один</td>
		<td>два</td>
		<td>три</td>
		<td>четыре</td>
		<td>пять</td>
	</tr>
	<tr>
		<td>два</td>
		<td>3</td>
		<td>3</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
	<tr>
		<td>три</td>
		<td>3</td>
		<td>8</td>
		<td>5</td>
		<td>9</td>
		<td>9</td>
	</tr>
	<tr>
		<td>четыре</td>
		<td>2</td>
		<td>8</td>
		<td>5</td>
		<td>9</td>
		<td>5</td>
	</tr>
	<tr>
		<td>пять</td>
		<td>2</td>
		<td>5</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
</table>

</body>
</html>

Последний раз редактировалось рони, 14.06.2016 в 22:32.
Ответить с цитированием
  #5 (permalink)  
Старый 14.06.2016, 22:34
Новичок на форуме
Отправить личное сообщение для PILATONE Посмотреть профиль Найти все сообщения от PILATONE
 
Регистрация: 14.06.2016
Сообщений: 4

рони,
Спасибо огромное!

еще вопросик, а как сделать чтоб пустые ячейки не объединялись?
Ответить с цитированием
  #6 (permalink)  
Старый 14.06.2016, 22:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от PILATONE
а как сделать чтоб пустые ячейки не объединялись?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  td{
    border: 1px solid #008000;
    text-align: center;
  }

 </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll("tr");
    [].forEach.call(a, function(c) {
        var a = c.querySelectorAll("td");
        [].reduce.call(a, function(a, b) {
            if (/\S/.test(b.textContent) && b.textContent == a.textContent) {
            a.colSpan++;
            c.removeChild(b);
            return a
            }
            return b;
        })
    })
});
  </script>
</head>

<body>
<table id="table">
	<tr>
		<td></td>
		<td>один</td>
		<td>два</td>
		<td>три</td>
		<td>четыре</td>
		<td>пять</td>
	</tr>
	<tr>
		<td>два</td>
		<td>3</td>
		<td>3</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
	<tr>
		<td>три</td>
		<td>3</td>
		<td> </td>
		<td> </td>
		<td>9</td>
		<td>9</td>
	</tr>
	<tr>
		<td>четыре</td>
		<td>2</td>
		<td>8</td>
		<td>5</td>
		<td>9</td>
		<td>5</td>
	</tr>
	<tr>
		<td>пять</td>
		<td>2</td>
		<td>5</td>
		<td>5</td>
		<td>4</td>
		<td>4</td>
	</tr>
</table>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 14.06.2016, 22:51
Новичок на форуме
Отправить личное сообщение для PILATONE Посмотреть профиль Найти все сообщения от PILATONE
 
Регистрация: 14.06.2016
Сообщений: 4

рони,
Большое спасибо!
без вас я бы не справился!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать данные в другую панель из выбранной строки таблицы. layout: 'card'. Пролетарий ExtJS 5 03.06.2015 22:53
Получение данных из строки таблицы idShura AJAX и COMET 3 30.05.2014 16:39
Узнать номер строки таблицы по клику antserg jQuery 4 13.11.2011 13:46
Как реализовать скроллинг в Div-е до указанной строки таблицы. Shabol Элементы интерфейса 3 24.09.2010 14:19
Как вложено прятать строки таблицы? Бобр Общие вопросы Javascript 10 01.08.2010 13:57