JavaScript Работа с элементами страницы
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM управление элементами</title>
<script src="/app.js" defer></script>
<style>
body{
background-color: #435187;
color: rgba(255, 255, 255, 0.672)
}
.autos{
display: flex;
align-items: center;
justify-content: center;
}
.autoCard {
width: 25%;
background-color: #fff;
color:black;
text-align: center;
margin: 5px;
box-shadow: 6px 6px 6px black;
}
.btn{
margin-bottom: 15px;
padding: 10px;
background-color: #000000;
color: white;
cursor: pointer;
}
</style>
</head>
<body>
</body>
</html>
// DOM управление элементами
// Создание элемента div
const div = document.createElement('div');
// Добавление класса 'wrapper' к нему
div.classList.add('wrapper');
// Добаление его на страницу
const body = document.body;
body.appendChild(div);
// Создание заголовка H1 с текстом 'Изучение DOM'
const header = document.createElement('h1');
header.textContent = 'Изучение DOM';
// Добавление заголовка ПЕРЕД DIV с классом 'wrapper'
div.insertAdjacentElement('beforebegin', header);
// Создание списка из трех элементов
const ul = `
<ul>
<li>Один</li>
<li>Два</li>
<li>Три</li>
</ul>
`;
// Размещение списка внутри DIV с классом wrapper
div.innerHTML = ul
// Создание изображения
const img = document.createElement('img');
img.src = '/070_bl.png';
img.width = 240;
img.classList.add('super');
img.alt = 'Легко стирать в машине'
// Установка изображения на страницу внутрь DIV с классом wrapper
div.appendChild(img);
// Добавление элементов с помощью HTML строки
const elemHTML = `
<div class = 'pDiv'>
<p>Параграф 1</p>
<p>Параграф 2</p>
</div>
`
// Помещение элемента перед ul
const ulList = div.querySelector('ul');
ulList.insertAdjacentHTML('beforebegin', elemHTML);
// Добавление ко второму параграфу класса text
const pDiv = document.querySelector('.pDiv');
pDiv.children[1].classList.add('text');
// Удаление первого параграфа
pDiv.firstElementChild.remove();
// Создание функции для генерации разметки
const generateAutoCard = (brand, color, year) => {
const curDate = new Date();
const curYear = curDate.getFullYear();
return `
<div class = "autoCard">
<div>
<h2>${brand.toUpperCase()} ${year}</h2>
<p>Автомобиль ${brand} - ${year} года. Возраст ${curYear - year} лет</p>
<p>Цвет: ${color}</p>
<button type='button' class = 'btn'>Удалить</button>
</div>
</div>
`;
}
// Создаем новый DiV с классом autos
const carsDiv = document.createElement('div');
carsDiv.classList.add('autos');
// Создаем карточки товара на основе информации из массива carsList
const carsList = [
{ brand: 'Tesla', year: 2015, color: 'Красный' },
{ brand: 'Lexux', year: 2017, color: 'Серебрянный' },
{brand: 'Nissan', year: 2018, color: 'Голубой'}
];
const carsHTML = carsList.map(car => {
return generateAutoCard(car.brand, car.color, car.year)
}).join('');
carsDiv.innerHTML = carsHTML;
// Помещаем на страницу до дива с классом wrapper
div.insertAdjacentElement('beforebegin', carsDiv);
// Обработка кнопок
const buttons = document.querySelectorAll('.btn');
// Создаем функцию удаления карточек
function handleClick(e) {
const currentButton = e.currentTarget;
// currentButton.parentElement.remove(); // Не желательно использовать
currentButton.closest('.autoCard').remove(); // Отлично работает!!!!!
console.log(currentButton.parentElement);
}
buttons.forEach(button => {
button.addEventListener('click', handleClick)
})
Комментарии
Отправить комментарий