/
magarich
/
web
Обзор
Документация
Войти
/
magarich
/
web
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
html/lab5/task2/js.js
109 строк
4 KB
Юра Магарьян
Final submission: Lab2 and Lab3 by Magaryan Yury PIZ2402
17 апр 2026, 23:12
17 апр 2026, 23:12
0827836
Код
Авторство
О чём код?
document.addEventListener('DOMContentLoaded', () => { const taskInput = document.getElementById('taskInput'); const addTaskBtn = document.getElementById('addTaskBtn'); const taskList = document.getElementById('taskList'); // Функция получения текущей даты и времени в формате "ДД.ММ.ГГГГ ЧЧ:ММ" function getCurrentDateTime() { const now = new Date(); const day = String(now.getDate()).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0'); const year = now.getFullYear(); const hours = String(now.getHours()).padStart(2, '0'); const minutes = String(now.getMinutes()).padStart(2, '0'); return `${day}.${month}.${year} ${hours}:${minutes}`; } // Добавление задачи function addTask() { const text = taskInput.value.trim(); if (text === '') return; const dateTime = getCurrentDateTime(); const taskItem = document.createElement('div'); taskItem.className = 'task-item'; taskItem.innerHTML = ` <div class="task-header">${dateTime}</div> <div class="task-text">${text}</div> <div class="task-actions"> <button class="copy-btn">Копировать в буфер</button> <button class="delete-btn">Удалить задачу</button> </div> `; // Вставляем новую задачу в начало списка taskList.insertBefore(taskItem, taskList.firstChild); // Очищаем поле ввода taskInput.value = ''; taskInput.focus(); // Обработчики кнопок const copyBtn = taskItem.querySelector('.copy-btn'); const deleteBtn = taskItem.querySelector('.delete-btn'); // Fallback-функция для копирования текста в буфер обмена function fallbackCopyTextToClipboard(text) { const textArea = document.createElement("textarea"); textArea.value = text; // Скрыть textarea от пользователя textArea.style.position = "fixed"; textArea.style.left = "-999999px"; textArea.style.top = "-999999px"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { const successful = document.execCommand('copy'); if (successful) { alert('Текст скопирован в буфер обмена!'); } else { alert('Не удалось скопировать текст.'); } } catch (err) { console.error('Ошибка при копировании через execCommand:', err); alert('Не удалось скопировать текст. Пожалуйста, скопируйте вручную.'); } document.body.removeChild(textArea); } // Теперь ваш обработчик кнопки будет работать copyBtn.addEventListener('click', () => { const fullText = `${dateTime}\n${text}`; if (navigator.clipboard && window.isSecureContext) { navigator.clipboard.writeText(fullText) .then(() => { alert('Текст скопирован в буфер обмена!'); }) .catch(err => { console.error('Ошибка копирования через Clipboard API:', err); fallbackCopyTextToClipboard(fullText); }); } else { console.warn('Clipboard API не доступен или контекст небезопасен. Используется fallback.'); fallbackCopyTextToClipboard(fullText); } }); deleteBtn.addEventListener('click', () => { taskItem.remove(); }); } // Обработчик кнопки "Добавить задачу" addTaskBtn.addEventListener('click', addTask); // Также можно добавлять задачу по Enter (с Shift для переноса строки) taskInput.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); addTask(); } }); });