DEV Community

Cover image for Interactive Quiz App
TD!
TD!

Posted on

Interactive Quiz App

This project is a simple interactive quiz application built with HTML, CSS, and JavaScript. It allows users to answer multiple-choice questions, submit their answers, and receive an instant score. The app demonstrates basic form handling, dynamic content updates, and DOM manipulation in JavaScript.


πŸš€ Project Overview

Features

  • Multiple Choice Questions: Three questions with multiple answer options.
  • Submit Button: Allows users to submit their answers.
  • Instant Scoring: Displays the user's score immediately after submission.
  • Interactive Design: Simple styling and hover effects for better user experience.

Technologies Used

  • HTML: For structuring the content.
  • CSS: For styling the quiz interface.
  • JavaScript: For adding interactivity and processing the answers.

πŸ“‚ File Structure

quiz-app/
β”‚-- index.html      ← The HTML structure
β”‚-- styles.css      ← The CSS styling
β””-- script.js       ← The JavaScript logic
Enter fullscreen mode Exit fullscreen mode

πŸ“ Code Breakdown

πŸ“„ HTML (index.html)

The HTML file creates the structure of the quiz, including questions, answer choices, and a submit button.

Key Elements:

  • Form (<form>) to group quiz questions.
  • Radio Buttons (<input type="radio">) for selecting answers.
  • Submit Button to check the answers.
  • Result Div to display the score.
<form id="quiz-form">
  <div class="question">
    <p>1. What is the capital of France?</p>
    <label><input type="radio" name="q1" value="Paris"> Paris</label>
    <label><input type="radio" name="q1" value="Rome"> Rome</label>
    <label><input type="radio" name="q1" value="London"> London</label>
  </div>

  <button type="button" id="submit-btn">Submit Answers</button>
</form>

<div id="result"></div>
Enter fullscreen mode Exit fullscreen mode

🎨 CSS (styles.css)

The CSS file styles the quiz interface, making it visually appealing and responsive.

Key Styling Concepts:

  • Layout: Flexbox for alignment and spacing.
  • Hover Effects: Button changes color when hovered.
  • Box Shadow: For a modern card-like appearance.
button {
  background-color: #28a745;
  color: #fff;
  padding: 10px 15px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

button:hover {
  background-color: #218838;
}
Enter fullscreen mode Exit fullscreen mode

βš™οΈ JavaScript (script.js)

The JavaScript file handles the quiz logic, processes user answers, and displays the score.

Key Concepts:

  • Event Listeners: To detect when the user clicks the submit button.
  • Form Handling: Accessing user-selected answers.
  • DOM Manipulation: Updating the result section with the user's score.
document.getElementById('submit-btn').addEventListener('click', function() {
  const answers = {
    q1: 'Paris',
    q2: '4',
    q3: 'Blue'
  };

  let score = 0;
  const form = document.getElementById('quiz-form');

  if (form.q1.value === answers.q1) score++;
  if (form.q2.value === answers.q2) score++;
  if (form.q3.value === answers.q3) score++;

  document.getElementById('result').textContent = `You scored ${score} out of 3!`;
});
Enter fullscreen mode Exit fullscreen mode

🧠 Key Concepts for Learning

  1. HTML Forms and Inputs:

    • How to structure forms and use radio buttons for multiple-choice questions.
    • Understanding the name attribute for grouping radio inputs.
  2. CSS Styling:

    • Using Flexbox for layout and alignment.
    • Adding visual appeal with hover effects and shadows.
  3. JavaScript Interactivity:

    • Adding event listeners with addEventListener().
    • Reading form data and comparing user input to correct answers.
    • Updating the DOM dynamically using textContent.

πŸ› οΈ How to Run the Project

  1. Clone or Download the Project:
   git clone https://github.com/yourusername/simple_interface.git
Enter fullscreen mode Exit fullscreen mode
  1. Open index.html in your browser:
   open index.html
Enter fullscreen mode Exit fullscreen mode
  1. Try the Quiz:
    • Answer the questions.
    • Click "Submit Answers" to see your score.

🌟 Enhancements to Try

  • Add More Questions: Increase the number of questions to challenge users.
  • Custom Feedback: Show detailed feedback for each question.
  • Timer: Add a countdown timer for each question.
  • Styling Improvements: Enhance the design with animations or themes.

πŸŽ‰ View Project on GitHub πŸ’»

Top comments (0)