Шаблон вопрос/ответ
Вот пример интеграции HTML-формы для ввода ответов с вашим скриптом:
 
```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Вопрос-ответ</title>
    <style>
        .container {
            max-width: 600px;
            margin: 20px auto;
            padding: 20px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        .question-box {
            margin-bottom: 20px;
            padding: 15px;
            background: #f8f9fa;
        }
        textarea {
            width: 100%;
            height: 100px;
            margin: 10px 0;
            padding: 10px;
        }
        button {
            background: #007bff;
            color: white;
            padding: 10px 20px;
            border: none;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="question-box" id="questionContainer"></div>
        
        <form id="answerForm">
            <textarea 
                id="answerInput" 
                placeholder="Введите ваш ответ здесь..."
                required
            ></textarea>
            <button type="submit">Отправить ответ</button>
        </form>
    </div>
 
    <script>
        // Инициализация при загрузке страницы
        document.addEventListener('DOMContentLoaded', () => {
            // Текст с вопросами
            const questionText = `
                Как называется столица России? 
                Что такое фотосинтез? 
                Почему небо голубое? 
                Сколько планет в Солнечной системе? 
                Как работает JavaScript?
            `;
 
            // Получаем элементы DOM
            const questionContainer = document.getElementById('questionContainer');
            const answerForm = document.getElementById('answerForm');
            const answerInput = document.getElementById('answerInput');
 
            // Обработка вопросов
            const questions = questionText
                .split('\n')
                .map(line => line.trim())
                .filter(line => /.*\?$/.test(line) && line.split(/\s+/).length >= 3);
 
            // Показываем случайный вопрос
            function showRandomQuestion() {
                if(questions.length > 0) {
                    const randomIndex = Math.floor(Math.random() * questions.length);
                    questionContainer.textContent = questions[randomIndex];
                } else {
                    questionContainer.textContent = 'Вопросы не найдены!';
                }
            }
 
            // Обработка отправки формы
            answerForm.addEventListener('submit', (e) => {
                e.preventDefault();
                
                const answer = answerInput.value.trim();
                
                if(!answer) {
                    alert('Пожалуйста, введите ответ!');
                    return;
                }
 
                // Здесь можно добавить обработку ответа
                console.log('Ответ получен:', answer);
                alert('Ответ принят! Спасибо!');
                
                // Очищаем поле ввода и показываем новый вопрос
                answerInput.value = '';
                showRandomQuestion();
            });
 
            // Показать первый вопрос при загрузке
            showRandomQuestion();
        });
    </script>
</body>
</html>
```
 
Этот код:
1. Создает структуру HTML с:
   - Контейнером для отображения вопроса
   - Формой с текстовым полем для ответа
   - Кнопкой отправки ответа
 
2. Добавляет функциональность:
   - Автоматически показывает случайный вопрос при загрузке
   - Обновляет вопрос после отправки ответа
   - Проверяет заполненность поля ответа
   - Очищает форму после отправки
   - Выводит уведомления для пользователя
 
3. Особенности:
   - Адаптивный дизайн с базовой стилизацией
   - Валидация формы
   - Поддержка Enter для отправки формы
   - Защита от пустых ответов
   - Логирование ответов в консоль
 
Для дальнейшего развития можно добавить:
- Оценку ответов
- Хранение истории ответов
- Таймер для ответа
- Категории вопросов
- Систему баллов
- Визуальные эффекты
- Загрузку вопросов с сервера
 
Чтобы модифицировать обработку ответов, измените часть кода внутри обработчика события `submit`.
Категория: второй подраздел | Добавил: Lom (13.02.2025)
Просмотров: 5
Всего комментариев: 0
avatar
app.get('/reposts', async (req, res) => { const reposts = await Repost.find(); res.render('reposts', { reposts }); });>