/
ChizhenkoM
/
web-static-labs
Обзор
Документация
Войти
/
ChizhenkoM
/
web-static-labs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
html/lab5/task2/script.js
92 строки
3 KB
ChizhenkoM
lab8
17 апр 2026, 08:29
Верифицирован
17 апр 2026, 08:29
72323f6
Код
Авторство
О чём код?
'use strict'; const tasksList = document.getElementById('tasksList'); const addBtn = document.getElementById('addBtn'); const taskInput = document.getElementById('taskInput'); function formatDate() { 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'); const seconds = String(now.getSeconds()).padStart(2, '0'); return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`; } function escapeHtml(str) { return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); } function addTask(text) { if (!text.trim()) { alert('Введите текст задачи'); return; } const taskItem = document.createElement('div'); taskItem.className = 'task-item'; const date = formatDate(); taskItem.innerHTML = ` <div class="task-info"> <div class="task-date">${date}</div> <div class="task-text">${escapeHtml(text)}</div> </div> <div class="task-buttons"> <button class="copy-btn">Копировать</button> <button class="delete-btn">Удалить</button> </div> `; const copyBtn = taskItem.querySelector('.copy-btn'); const taskText = taskItem.querySelector('.task-text').textContent; copyBtn.addEventListener('click', async () => { try { await navigator.clipboard.writeText(taskText); copyBtn.textContent = 'Скопировано!'; setTimeout(() => { copyBtn.textContent = 'Копировать'; }, 1500); } catch (err) { // Альтернативный метод для старых браузеров или заблокированного Clipboard API const textarea = document.createElement('textarea'); textarea.value = taskText; document.body.appendChild(textarea); textarea.select(); const success = document.execCommand('copy'); document.body.removeChild(textarea); if (success) { copyBtn.textContent = 'Скопировано!'; setTimeout(() => { copyBtn.textContent = 'Копировать'; }, 1500); } else { alert('Не удалось скопировать текст'); } } }); const deleteBtn = taskItem.querySelector('.delete-btn'); deleteBtn.addEventListener('click', () => { taskItem.remove(); }); tasksList.prepend(taskItem); } addBtn.addEventListener('click', () => { addTask(taskInput.value); taskInput.value = ''; taskInput.focus(); }); taskInput.addEventListener('keypress', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); addBtn.click(); } });