
В этом уроке вы познакомитесь с клонированием элементов DOM в JavaScript. Клонирование позволяет создавать точные копии существующих элементов, включая их атрибуты и содержимое. Это полезно, когда вам нужно многократно использовать один и тот же элемент или структуру, или когда вы хотите сохранить исходный элемент, но внести изменения в его копию. Вы начнете с простых задач клонирования отдельных элементов и постепенно перейдете к более сложным сценариям, включая клонирование с глубоким копированием и вставку клонов в различные части документа. Каждое задание сопровождается готовым HTML и частично заполненным JavaScript кодом, в котором вам нужно будет дописать пропущенные части.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Простое клонирование абзаца
Клонируйте абзац с текстом "Исходный абзац" и добавьте клонированный абзац в конец блока с id "container".
<div id="container">
<p id="originalParagraph">Исходный абзац</p>
</div>
let originalParagraph = document.input__1("originalParagraph");
let clonedParagraph = originalParagraph.input__2(true);
document.input__3("container").input__4(clonedParagraph);
Клонирование списка элементов
Клонируйте список ul с id "list" и добавьте клонированный список после исходного списка.
<ul id="list">
<li>Пункт 1</li>
<li>Пункт 2</li>
</ul>
let originalList = document.input__1("list");
let clonedList = originalList.input__2(true);
originalList.input__3(clonedList);
Клонирование и изменение текста
Клонируйте абзац с id "textParagraph", измените текст клонированного абзаца на "Клонированный текст" и добавьте его в div с id "output".
<div id="output"></div>
<p id="textParagraph">Исходный текст</p>
let originalParagraph = document.input__1("textParagraph");
let clonedParagraph = originalParagraph.input__2(true);
clonedParagraph.input__3 = "Клонированный текст";
document.input__4("output").input__5(clonedParagraph);
Клонирование с изменением атрибута
Клонируйте изображение с id "image", измените атрибут src клонированного изображения на "https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike-300x300.png" и добавьте его в div с id "imageOutput".
<div id="imageOutput"></div>
<img id="image" src="https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png" alt="Исходное изображение">
let originalImage = document.input__1("image");
let clonedImage = originalImage.input__2(true);
clonedImage.input__3("src", "https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike-300x300.png");
document.input__4("imageOutput").input__5(clonedImage);
Клонирование и вставка в начало
Клонируйте первый элемент списка ul с id "itemsList" и вставьте клонированный элемент в начало этого же списка.
<ul id="itemsList">
<li class="item">Элемент 1</li>
<li class="item">Элемент 2</li>
</ul>
let list = document.input__1("itemsList");
let firstItem = list.input__2[0];
let clonedItem = firstItem.input__3(true);
list.input__4(clonedItem);
Клонирование с изменением класса
Клонируйте кнопку с id "button", добавьте клонированной кнопке класс "cloned-button" и вставьте ее после исходной кнопки.
.cloned-button {
background-color: lightgreen;
}
<button id="button">Исходная кнопка</button>
let originalButton = document.input__1("button");
let clonedButton = originalButton.input__2(true);
clonedButton.classList.input__3("cloned-button");
originalButton.input__4(clonedButton);
Клонирование группы элементов
Клонируйте div с id "card", который содержит заголовок и абзац, и добавьте три клонированных div в div с id "cardsContainer".
.card {
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 10px;
}
<div id="cardsContainer"></div>
<div id="card" class="card">
<h3>Заголовок карточки</h3>
<p>Текст карточки.</p>
</div>
let originalCard = document.input__1("card");
let cardsContainer = document.input__2("cardsContainer");
for (let i = 0; i < input__3; i++) {
let clonedCard = originalCard.input__4(true);
cardsContainer.input__5(clonedCard);
}
Клонирование и удаление класса у оригинала
Клонируйте div с id "removable", добавьте клону класс "cloned", а у оригинального div удалите класс "highlight".
.highlight {
background-color: yellow;
}
.cloned {
border: 2px solid blue;
}
<div id="removable" class="highlight">Элемент для клонирования</div>
<div id="outputContainer"></div>
let originalElement = document.input__1("removable");
let clonedElement = originalElement.input__2(true);
clonedElement.classList.input__3("cloned");
originalElement.classList.input__4("highlight");
document.input__5("outputContainer").input__6(clonedElement);