← Back to JavaScript Course | Chapter 12: Reference & Interview | Lesson 6 of 9

JS मिनी प्रोजेक्ट्स

एक-एक करके individual JavaScript features के बारे में पढ़ना कुछ-कुछ piano पर scales practice करने जैसा है, उपयोगी, पर जब तक आप कोई असली गाना नहीं बजाते तब तक टुकड़े आपस में जुड़ते नहीं महसूस होते। ये mini projects कई concepts को, जैसे event listeners, DOM updates, और state, छोटे, पूरे, काम करने वाले interactivity के टुकड़ों में पिरोते हैं।

Click Counter

एक click counter एक event listener को state के एक टुकड़े के साथ मिलाता है, एक variable जो current count track करता है, और हर बार वह state बदलने पर visible text update करता है।

यह उस core interactive pattern का एक compact प्रदर्शन है जिसे लगभग हर JavaScript app इस्तेमाल करता है: किसी event पर react करना, state update करना, उस state को DOM में दिखाना।

उदाहरण: Click Counter

javascript
<button id="btn">Clicked 0 times</button>
<script>
  // Declare the variable `count`, set to `0`
  let count = 0;
  document.getElementById("btn").addEventListener("click", function () {
    count++;
    // Assign `Clicked ${count} times` to `this.textContent`
    this.textContent = `Clicked ${count} times`;
  });
</script>

To-Do List

एक to-do list किसी text input से एक value पढ़ने, हर item के लिए एक नया DOM element बनाने, और उसे एक list container में जोड़ने को मिलाती है, जो आमतौर पर किसी button click या form submission से trigger होता है।

यह user input को persistent, visible page content में बदलने का एक छोटा पर पूरा उदाहरण है।

उदाहरण: To-Do List

javascript
<input id="taskInput">
<button id="addBtn">Add</button>
<ul id="taskList"></ul>
<script>
  document.getElementById("addBtn").addEventListener("click", () => {
    // Declare the constant `li`, set to `document.createElement("li")`
    const li = document.createElement("li");
    // Assign `document.getElementById("taskInput").value` to `li.textContent`
    li.textContent = document.getElementById("taskInput").value;
    // Call `document.getElementById("taskList").appendChild(li)`
    document.getElementById("taskList").appendChild(li);
  });
</script>

Modal Popup

एक modal popup एक hidden panel है, जो आमतौर पर page के बाकी हिस्से के ऊपर बैठने के लिए styled होता है, जो trigger होने पर visible हो जाता है और dismiss होने पर फिर से छिप जाता है, आमतौर पर बाहर click करने या एक close button से।

Core logic बस click events के जवाब में एक class जोड़ना या हटाना है, या display style को toggle करना है।

उदाहरण: Modal Popup

javascript
<button id="openBtn">Open Modal</button>
<div id="modal" style="display:none;">Modal content <button id="closeBtn">Close</button></div>
<script>
  // Show the modal when the Open button is clicked
  document.getElementById("openBtn").onclick = () => document.getElementById("modal").style.display = "block";
  // Hide the modal again when the Close button is clicked
  document.getElementById("closeBtn").onclick = () => document.getElementById("modal").style.display = "none";
</script>

Form Validation

Client-side form validation किसी submit को आगे बढ़ने देने से पहले input values जांचता है, आमतौर पर default submit व्यवहार को रोककर और field values को खाली होने या किसी expected pattern के लिए जांचकर।

यह server तक के round trip का इंतज़ार किए बिना users को तुरंत feedback देता है, हालांकि असली security के लिए server-side validation अभी भी ज़रूरी है।

उदाहरण: Form Validation

javascript
<form id="form">
  <input id="email">
  <button type="submit">Submit</button>
</form>
<script>
  document.getElementById("form").addEventListener("submit", (e) => {
    // Call `e.preventDefault()`
    e.preventDefault();
    // Check whether `!document.getElementById("email").value`
    if (!document.getElementById("email").value) {
      // Print "Email is required" to the console
      console.log("Email is required");
    }
  });
</script>

Concepts मिलाना: एक Mini Quiz Widget

एक छोटा quiz widget data-driven content render करने, dynamically बनाए गए options पर clicks सुनने, selection को किसी जाने-पहचाने सही answer से compare करने, और score जैसी running state को update करने को साथ जोड़ता है।

यह यह practice करने के लिए एक अच्छा exercise है कि कई छोटे JavaScript concepts कैसे मिलकर एक interactive feature बनाते हैं।

उदाहरण: Combining Concepts: A Mini Quiz Widget

javascript
<p id="question">2 + 2 = ?</p>
<button data-answer="4">4</button>
<button data-answer="5">5</button>
<p id="score">Score: 0</p>
<script>
  // Declare the variable `score`, set to `0`
  let score = 0;
  document.querySelectorAll("button").forEach(btn => {
    btn.addEventListener("click", () => {
      if (btn.dataset.answer === "4") score++;
      document.getElementById("score").textContent = "Score: " + score;
    });
  });
</script>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. elements के मौजूद होने से पहले script चलाना, इसलिए getElementById null return करता है और listener जोड़ने पर TypeError throw होता है।
  2. किसी submit handler में event.preventDefault() भूल जाना, इसलिए form page reload कर देता है और validation message गायब हो जाता है।
  3. input values को numbers की तरह पढ़ना जबकि input.value हमेशा एक string होता है।
🔒

Chapter Quiz — Complete all 9 topics to unlock

0/9 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.