accordion.addEventListener('click', function (e) {
let target = e.target.closest('.accordion__item-title');
if (target) {
console.log('click');
const content = target.nextElementSibling;
if (content.style.display === 'none') {
content.style.display = 'block';
} else {
content.style.display = 'none';
}
}
});
const progress = Math.min(scrollPosition / (documentHeight - windowHeight), 1);
line.style.strokeDashoffset = totalLength * (1 - progress);
};
const array = ['part1-item1', 'part1-item2', 'part2-item1', 'part3-item1'];
const result = array.reduce((acc, rec) => {
const [devId, paramId] = rec.split('-');
if (!acc[devId]) {
acc[devId] = [paramId];
} else {
acc[devId].push(paramId);
}
return acc;
}, {});
console.log(result);
<div class="wrap_item" data-section="1">
<h3 class="title_heading">Секция №1</h3>
<div class="wrap_elements">
<div class="class_element">Элемент 1</div>
<div class="class_element">Элемент 2</div>
<div class="class_element">Элемент 3</div>
<div class="class_element">Элемент 4</div>
<div class="class_element">Элемент 5</div>
</div>
<div class="pagination"></div>
</div>
<div class="wrap_item" data-section="2">
<h3 class="title_heading">Секция №2</h3>
<div class="wrap_elements">
<div class="class_element">Элемент A</div>
<div class="class_element">Элемент B</div>
<div class="class_element">Элемент C</div>
<div class="class_element">Элемент D</div>
<div class="class_element">Элемент E</div>
</div>
<div class="pagination"></div>
</div>
<div class="wrap_item" data-section="3">
<h3 class="title_heading">Секция №3</h3>
<div class="wrap_elements">
<div class="class_element">Элемент α</div>
<div class="class_element">Элемент β</div>
<div class="class_element">Элемент γ</div>
<div class="class_element">Элемент δ</div>
<div class="class_element">Элемент ε</div>
</div>
<div class="pagination"></div>
</div>
document.addEventListener('DOMContentLoaded', () => {
const itemsPerPage = 2;
document.querySelectorAll('.wrap_item').forEach((section) => {
const wrapElements = section.querySelector('.wrap_elements');
const elements = Array.from(wrapElements.children);
const paginationContainer = section.querySelector('.pagination');
const totalPages = Math.ceil(elements.length / itemsPerPage);
function showPage(page) {
elements.forEach((el, index) => {
el.style.display =
index >= (page - 1) * itemsPerPage && index < page * itemsPerPage
? ''
: 'none';
});
}
function createPagination() {
paginationContainer.innerHTML = ''; // очистили контейнер пагинации
for (let i = 1; i <= totalPages; i++) {
const button = document.createElement('button');
button.textContent = i;
button.addEventListener('click', () => {
showPage(i);
updateActiveButton(i);
});
paginationContainer.appendChild(button);
}
updateActiveButton(1);
}
function updateActiveButton(activePage) {
paginationContainer.querySelectorAll('button').forEach((btn, index) => {
btn.classList.toggle('active', index + 1 === activePage);
});
}
showPage(1);
createPagination();
});
});
.wrap_elements {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.class_element {
padding: 10px;
border: 1px solid #ccc;
background: #f5f5f5;
}
.pagination button {
margin: 0 5px;
padding: 5px 10px;
border: none;
background: #ddd;
cursor: pointer;
}
.pagination button.active {
background: #ff6f61;
color: #fff;
}
function visitLinksSequentially(links) {
let index = 0;
function waitForPageLoad(newTab, callback) {
// ждем полную загрузку
newTab.addEventListener('load', function onLoad() {
newTab.removeEventListener('load', onLoad);
callback();
});
}
function extractData(newTab, callback) {
// логика для извлечения данных
const extractedData = newTab.document.querySelectorAll('SELECTOR_YOUR_DATA');
console.log('Извлечённые данные:', extractedData);
callback();
}
function visitNextLink() {
if (index < links.length) {
const link = links[index];
index++;
const newTab = window.open(); // открыли новую вкладку
newTab.location.href = link;
waitForPageLoad(newTab, () => {
setTimeout(() => {
extractData(newTab, () => {
newTab.close(); // закрыли
visitNextLink(); // пошли дальше
});
}, 1000);
});
} else {
console.log('Good job bro!');
}
}
visitNextLink();
}
<div class="header">
<h1 class="bmi_calc">Калькулятор ИМТ</h1>
<h4>Рост</h4>
<input class="input_height" type="text" placeholder="Введите рост (см)">
<h4>Вес</h4>
<input class="input_weight" type="text" placeholder="Введите вес (кг)">
<p>
<button class="button" type="button">Рассчитать</button>
</p>
<div class="result"></div>
</div>
window.onload = () => {
const button = document.querySelector(".button");
button.addEventListener("click", calculateBMI);
}
function calculateBMI() {
const height = parseInt(document.querySelector(".input_height").value);
const weight = parseInt(document.querySelector(".input_weight").value);
const result = document.querySelector(".result");
if (isNaN(height) || height <= 0) {
result.innerHTML = "Укажите реальный рост";
} else if (isNaN(weight) || weight <= 0) {
result.innerHTML = "Укажите реальный вес";
} else {
const bmi = (weight / ((height * height) / 10000)).toFixed(2);
if (bmi < 18.6) {
result.innerHTML = `Низкий вес: <span>${bmi}</span>`;
} else if (bmi >= 18.6 && bmi < 24.9) {
result.innerHTML = `Нормальный вес: <span>${bmi}</span>`;
} else {
result.innerHTML = `Избыточный вес: <span>${bmi}</span>`;
}
}
}