<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;
}
Статья 158 Гражданского кодекса Российской Федерации допускает, что согласие на сделку может следовать из поступков стороны, направленных на реализацию сделки (конклюдентные действия), даже если не было явных заявлений о воле принять условия оферты. Например, факт посадки в общественный транспорт свидетельствует о желании ехать и приемлемости описанных условий оказания транспортных услуг (маршрут, цена), что автоматически обязывает пассажира оплатить проезд.
Но юрист сказал клиенту, что нужно что бы были доказательства о том, что согласились клиенты с офертой.Делаем вывод: клиенту уволить юриста
И посоветовал сделать подпись простой электронной подписью.Нажатием кнопки "согласен с условиями" или чекбоксом "согласен с условиями". Без этого нажатия не пускать к оформлению заказа. Это типовая схема.
document.querySelectorAll('link').forEach((e => t(e)))
function t(e){"text/css"!=e.type&&"stylesheet"!=e.rel||!e.href||new URL(e.href,document.baseURI).origin==location.origin&&fetch(e.getAttribute("href")).then((async t=>{const i=await t.text();let n=Pt.transpileStyleSheet(i,!0);if(n=Pt.transpileStyleSheet(i,!1),n!=i){const t=new Blob([n],{type:"text/css"}),i=URL.createObjectURL(t);e.setAttribute("href",i)}}))}
a = [алфавит 0-9a-zA-Z]
foreach(i => index_a_0 ... index_a_last )
foreach( j => index_a_0 ... index_a_last )
foreach( k => index_a_0 ... index_a_last)
...
{
filename = a[i] + a[j] + ... a[m] + '.jpg'
result = [функция получения HTTP заголовков по url, метод HEAD](filename)
if(result.responseCode = 200) // Если HTTP код 200, то файл существует
{
// загружаем файл
}
// пишем в лог файл, какие i,j,k...m прошли
}
Была бы просто опечатка, разобрался бы сам.
$mergedWorkbook=new Spreadsheet();
foreach ($files as $file) {
$spreadsheet = IOFactory::load($file);
$worksheets = $spreadsheet->getAllSheets();
foreach ($worksheets as $worksheet) {
if ($mergedWorkbook->sheetNameExists($worksheet->getTitle())) {
$worksheet->setTitle($worksheet->getTitle() . rand(1,40));
}
$mergedWorkbook->addExternalSheet($worksheet);
}
}
$mergedWorkbook->removeSheetByIndex(0);
$writer = IOFactory::createWriter($mergedWorkbook, 'Xlsx');
$folderName=self::createFolder();
$writer->save(
"{$_SERVER['DOCUMENT_ROOT']}/upload/tmp/{$folderName}/mergedFilesDoc.xlsx"
);
// other_code before 1399 line
foreach ($this->getWorksheetIterator() as $sheet) {
// for all cells
foreach ($sheet->getCoordinates(false) as $coordinate) {
$cell = $sheet->getCell($coordinate);
$cell->setXfIndex($map[$cell->getXfIndex()]?$map[$cell->getXfIndex()]:0); // code modification
}
// for all row dimensions
foreach ($sheet->getRowDimensions() as $rowDimension) {
if ($rowDimension->getXfIndex() !== null) {
$rowDimension->setXfIndex($map[$rowDimension->getXfIndex()]?$map[$rowDimension->getXfIndex()]:0); // code modification
}
}
// for all column dimensions
foreach ($sheet->getColumnDimensions() as $columnDimension) {
$columnDimension->setXfIndex($map[$columnDimension->getXfIndex()]?$map[$columnDimension->getXfIndex()]:0); // code modification
}
// also do garbage collection for all the sheets
$sheet->garbageCollect();
}
// other_code after 1420 line