How to show images with a click in JavaScript using HTML?

To display images on click using JavaScript and HTML, you can create hidden images, add click events, and reveal images dynamically for an interactive user experience. This technique enhances user engagement and improves page load times by showing content only when needed.

Users often want to create interactive web pages where images are initially hidden and can be revealed with a click. The challenge is implementing this functionality using JavaScript and HTML in a simple and efficient manner.

Approaches to Show Images with a Click

Using the Style Display Property

The most straightforward approach is using the display property of the style object to hide and show images as needed.

Syntax

myImage.style.display = "block";  // Show image
myImage.style.display = "none";   // Hide image

Example

<!DOCTYPE html>
<html>
<body>
   <h2>Showing image with a click</h2>
   <button id="show-image-button">Show Image</button>
   <img id="my-image" 
        src="/javascript/images/javascript.jpg" 
        style="display: none;">
   
   <script>
      const showImageButton = document.getElementById("show-image-button");
      const myImage = document.getElementById("my-image");
      
      showImageButton.addEventListener("click", () => {
         if (myImage.style.display === "none") {
            myImage.style.display = "block";
            showImageButton.textContent = "Hide Image";
         } else {
            myImage.style.display = "none";
            showImageButton.textContent = "Show Image";
         }
      });
   </script>
</body>
</html>

Using the classList.toggle() Method

This approach uses CSS classes to control image visibility, which is useful when you want to apply animations or additional styles during show/hide transitions.

Syntax

myImage.classList.toggle("visible");

Example

<!DOCTYPE html>
<html>
<head>
   <style>
      .hidden {
         display: none;
      }
      .visible {
         display: block;
         transition: opacity 0.3s ease-in-out;
      }
   </style>
</head>
<body>
   <h2>Showing image with a click</h2>
   <button id="toggle-image-button">Toggle Image</button>
   <img id="my-image" 
        src="/javascript/images/javascript.jpg" 
        class="hidden">
   
   <script>
      const toggleImageButton = document.getElementById("toggle-image-button");
      const myImage = document.getElementById("my-image");
      
      toggleImageButton.addEventListener("click", () => {
         myImage.classList.toggle("visible");
         myImage.classList.toggle("hidden");
      });
   </script>
</body>
</html>

Using Hidden Attribute

The HTML5 hidden attribute provides a semantic way to control element visibility. This approach is simple and uses standard HTML attributes.

Syntax

myImage.hidden = !myImage.hidden;  // Toggle visibility

Example

<!DOCTYPE html>
<html>
<body>
   <h2>Showing image with a click</h2>
   <button id="toggle-image-button">Toggle Image</button>
   <img id="my-image" 
        src="/javascript/images/javascript.jpg" 
        hidden>
   
   <script>
      const toggleImageButton = document.getElementById("toggle-image-button");
      const myImage = document.getElementById("my-image");
      
      toggleImageButton.addEventListener("click", () => {
         myImage.hidden = !myImage.hidden;
         toggleImageButton.textContent = myImage.hidden ? "Show Image" : "Hide Image";
      });
   </script>
</body>
</html>

Comparison

Method Browser Support Animation Support Semantic Meaning
style.display All browsers Limited No
classList.toggle() Modern browsers Excellent Flexible
hidden attribute HTML5 browsers Limited Yes

Conclusion

All three methods effectively show/hide images on click. Use classList.toggle() for animations, hidden attribute for semantic HTML, or style.display for maximum browser compatibility. Choose based on your specific requirements and target browsers.

Updated on: 2026-03-15T23:19:00+05:30

38K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements