Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.06.2025, 16:50
Аспирант
Отправить личное сообщение для maiskiykot Посмотреть профиль Найти все сообщения от maiskiykot
 
Регистрация: 11.09.2018
Сообщений: 31

Объединять div c одинаковым классом
Всем привет!
Опять вот затык возник. Есть некая страница, на которую динамически подгружаются div с инфой. Есть необходимость на самом примитивном уровне объединять элементы с одинаковым классом (id как я понимаю - не годится). Подскажите решение плиззз. Можно даже без удаления одного из элементов - просто чтобы они склеивались к примеру <div class="0"> с <div class="0"> а див класс 5 с дивом класс 5 и т.д. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2025, 07:34
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,771

<head>
<style>
.c0 {
	width: 300px;
	border: 1px solid red;
}
.c5 {
	width: 350px;
	border: 1px solid green;
}
</style>
</head>
<body>
<div class="c0">
Это первый Div.c0
<br>
Сюда будем переносить
<br>
</div>

<div class="c5">
Это первый Div.c5
<br>
Сюда будем переносить
<br>
</div>

<div class="c0">
Это второй Div.c0
<br>
Его будем переносить
<br>
</div>

<div id="f5" class="c5">
Это второй Div.c5
<br>
Его будем переносить
<br>
</div>

<div class="c0">
Это третий Div.c0
<br>
Его тоже перенесем 
<br>
</div>

<div id="f5" class="c5">
Это третий Div.c5
<br>
Его тоже перенесем 
<br>
</div>

<div id="f5" class="c5">
Это четвертый Div.c5
<br>
И его перенесем 
<br>
</div>

<script>
/* Перенести информацию из всех элементов с указанным селектором 
в первый элемент с таким селектором. Остальные элементы удалить */
function moveСontents (selector) {
	const elems = [...document.querySelectorAll(selector)];
	if (elems.length <= 1) return;
	const first = elems[0];
	for (let i = 1; i < elems.length; i++) {
		first.insertAdjacentHTML('beforeend', elems[i].innerHTML);
		elems[i].remove();
	}
}

moveСontents ('.c0');
moveСontents ('.c5');

</script>
</body>
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2025, 11:35
Аспирант
Отправить личное сообщение для maiskiykot Посмотреть профиль Найти все сообщения от maiskiykot
 
Регистрация: 11.09.2018
Сообщений: 31

Спасибо за подсказку! Но тут одна проблема - номера будут все время разные, только 0 будет повторяться периодически. Остальные будут от 1 до бесконечности с группировкой 2-5 примерно элементов.
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2025, 11:57
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,260

Сообщение от maiskiykot
Но тут одна проблема - номера будут все время разные
Всегда можно сделать модификацию...

<style>
.c0 {
	width: 300px;
	border: 1px solid red;
}
.c5 {
	width: 350px;
	border: 1px solid green;
}
</style>
<main>
	<div class="c0">
	Это первый Div.c0
	<br>
	Сюда будем переносить
	<br>
	</div>

	<div class="c5">
	Это первый Div.c5
	<br>
	Сюда будем переносить
	<br>
	</div>

	<div class="c0">
	Это второй Div.c0
	<br>
	Его будем переносить
	<br>
	</div>

	<div id="f5" class="c5">
	Это второй Div.c5
	<br>
	Его будем переносить
	<br>
	</div>

	<div class="c0">
	Это третий Div.c0
	<br>
	Его тоже перенесем 
	<br>
	</div>

	<div id="f5" class="c5">
	Это третий Div.c5
	<br>
	Его тоже перенесем 
	<br>
	</div>

	<div id="f5" class="c5">
	Это четвертый Div.c5
	<br>
	И его перенесем 
	<br>
	</div>
<main>

<script>
/* Перенести информацию из всех элементов с указанным селектором 
в первый элемент с таким селектором. Остальные элементы удалить */
function moveСontents (selector) {
	const elems = [...document.querySelectorAll(selector)];
	if (elems.length <= 1) return;
	const first = elems[0];
	for (let i = 1; i < elems.length; i++) {
		first.insertAdjacentHTML('beforeend', elems[i].innerHTML);
		elems[i].remove();
	}
}
[...document.querySelectorAll('main > div')]
	.reduce((s, {className: c}) => (s.add(c), s), new Set)
	.forEach(c => moveСontents('.' + c))
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2025, 16:21
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,771

Сообщение от maiskiykot
Но тут одна проблема -
Очень полезно о задаче рассказывать все и сразу.
А так - каков вопрос, таков ответ.
И даже сейчас вы не говорите, а что делать с первым дивом с номером N. Просто добавлять? А куда?
Как приходят (откуда то? ) эти дивы? По одному? Пачками? Что именно приходит (откуда то берется готовый элемент или просто html текст чего то)?
Мы же не можем все это сами додумывать и тупо предполагать.
А от этого зависит способ решения.

Последний раз редактировалось voraa, 03.06.2025 в 16:25.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как показывать/скрывать элементы с одинаковым div? Sice Javascript под браузер 6 13.11.2017 01:44
как объединить все div с одинаковым id? BeetleJuice541 Общие вопросы Javascript 6 30.07.2014 16:32
Текущий div с классом SergeyMiracle jQuery 3 20.09.2013 14:16
Выбрать div с нужным классом из div, id которого меняется и поменять этот класс Boeing747 jQuery 5 05.10.2012 16:19
достать value с полей с одинаковым классом zloctb Общие вопросы Javascript 3 09.01.2012 19:55