Back to JavaScript Notes
Topic #119

JS Event Listener

Event listeners attach functions to user interactions like clicks and keys. addEventListener is the backbone of interactive pages.

Using an Event Listener

This is a copy of the previous project.

Now using Event Listeners instead of Onclick Attributes.

0

Using Event Listeners

Using addEventListener() makes it easier to:

  • Keep HTML and JavaScript separated
  • Add multiple events to the same element
  • Write cleaner code in bigger projects

HTML Code

<h2>Counter</h2>

<p id="count" style="font-size:40px;">0</p>

<button id="btnPlus">+</button>

<button id="btnMinus">-</button>

<button id="btnReset">Reset</button>

<button id="btnSave">Save</button>

<button id="btnLoad">Load</button>

<script>

// JavaScript goes here

</script>

JavaScript Code

// Add event listeners

document.getElementById("btnPlus").addEventListener("click", increaseCount);

document.getElementById("btnMinus").addEventListener("click", decreaseCount);

document.getElementById("btnReset").addEventListener("click", resetCount);

document.getElementById("btnSave").addEventListener("click", saveCount);

document.getElementById("btnLoad").addEventListener("click", loadCount);

// Declare the counter

let count = 0;

// Load counter when the page opens

loadCount();

// Function to display the counter

function updateCount() {

  document.getElementById("count").innerHTML = count;

}

// Function to increase the counter

function increaseCount() {

  count++;

  updateCount();

}

// Function to decrease the counter

function decreaseCount() {

  if (count > 0) {

  count--;

    updateCount();

  }

}

// Function to reset the counter

function resetCount() {

  count = 0;

  updateCount();

}

// Function to save the counter

function saveCount() {

  localStorage.setItem("count", count);

}

// Function to load the counter

function loadCount() {

  let saved = localStorage.getItem("count");

  if (saved !== null) {

    count = Number(saved);

  }

  updateCount();

}

  • JavaScript is moved to an external file (counter.js)
  • Uses DOMContentLoaded so JavaScript runs only after HTML is ready
  • Cleaner structure using small functions + element variables
  • Shows a short Saved! message
  • Shows a short Loaded! message

HTML Code

<!DOCTYPE html>

<html>

<body>

<h2>Counter</h2>

<p id="count" style="font-size:40px;">0</p>

<button id="btnPlus">+</button>

<button id="btnMinus">-</button>

<button id="btnReset">Reset</button>

<button id="btnSave">Save</button>

<button id="btnLoad">Load</button>

<script  src="counter.js"></script>

</body>

</html>

Note: Notice that the <script> tag is placed at the bottom, before </body>.

counter.js

document.addEventListener("DOMContentLoaded", function () {

// Declare the counter

let count = 0;

// Use element variables

const countEl = document.getElementById("count");

const msgEl = document.getElementById("message");

const btnPlus = document.getElementById("btnPlus");

const btnMinus = document.getElementById("btnMinus");

const btnReset = document.getElementById("btnReset");

const btnSave = document.getElementById("btnSave");

const btnLoad = document.getElementById("btnLoad");

// Add event listeners

btnPlus.addEventListener("click", increaseCount);

btnMinus.addEventListener("click", decreaseCount);

btnReset.addEventListener("click", resetCount);

btnSave.addEventListener("click", saveCount);

btnLoad.addEventListener("click", loadCount);

// Function to display the counter

function updateCount() {

  document.getElementById("count").innerHTML = count;

}

// Function to diplay message

function showMessage(text) {

  msgEl.innerHTML = text;

  setTimeout(function () {

    msgEl.innerHTML = "";

  }, 3000);

}

// Function to increase the counter

function increaseCount() {

  count++;

  updateCount();

}

// Function to decrease the counter

function decreaseCount() {

  count--;

  updateCount();

}

// Function to reset the counter

function resetCount() {

  count = 0;

  updateCount();

}

// Function to save the counter

function saveCount() {

  localStorage.setItem("count", count);

  showMessage("Saved!");

}

// Function to load the counter

function loadCount() {

  let saved = localStorage.getItem("count");

  if (saved !== null) {

    count = Number(saved);

    showMessage("Loaded!");

  }

  updateCount();

}

});

JavaScript in External File

Using counter.js makes your project:

  • More Organized
  • Keep HTML and JavaScript separated
  • Easier to read and to reuse
  • More like real-world projects

DOMContentLoaded

Why use DOMContentLoaded?

When you use an external JavaScript file, the browser may load the script before the HTML is ready. So we use:

document.addEventListener("DOMContentLoaded", function() {

// JavaScript code

});

This means: Run the JavaScript code after the page has finished loading the HTML.


Note: JavaScript Projects JavaScript Counter A counter project with restore and save in localStorage. JavaScript Event Listener The counter project using event listener instead of onclick. JavaScript To-Do List A do-do list saved in an array in local storage. JavaScript Modal Popup A modal popup window that appears on top of the page. JavaScript Form Validation An HTML Form with form validation.

Want to go beyond the notes?

Join Coding Now Tech Institute's JavaScript course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

JS Event Listener – FAQs

Quick answers about learning JS Event Listener in JavaScript.

This free note from Coding Now Tech Institute explains JS Event Listener in JavaScript — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every JavaScript topic on Coding Now Tech Institute, including JS Event Listener, is 100% free with no signup required.
With focused practice, most students grasp JS Event Listener in 1–3 days from these notes; pairing it with Coding Now Tech Institute's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the Coding Now Tech Institute Community (/community) — expert instructors answer within 24 hours.
Call NowEnroll Now