How to create Show More and Show Less functionality for hiding text using JavaScript ? - GeeksforGeeks

02 Nov, 2020
A Show More and Show Less functionality can be useful in websites that are heavy in text, like news and magazine websites that contain a lot of articles on a single page. This can help the web page designer to give the user the freedom to read more or less text as needed. 
The amount of content displayed can be changed by clicking on the buttons. Instead of showing a complete paragraph on a webpage, only some part of the text is shown initially and a button is added which shows more of the text. The amount of text that should be displayed after and before they click on a button can be decided by the developer.
The above approach can be implemented by using a simple if-else condition that checks the current status of the text and shows or hides it on that basis. The below example illustrates this method:
HTML
<!DOCTYPE html><html>  <head>    <style>        /* Initially, hide the extra text that            can be revealed with the button */        #moreText {              /* Display nothing for the element */            display: none;        }    </style></head>  <body>    <h1 style="color: green;">        GeeksforGeeks    </h1>          <h3>Show More and Show Less Example</h3>      <p>        GeeksforGeeks was born out of necessity-        a need to provide a convenient and        one-stop educational portal to all the        students of Computer Science.        <span id="points">...</span>          <!-- Define the text that would be             hidden by default and only shown             when clicked on the button -->        <span id="moreText"> This necessity was            as personal to me as it was universal.            This need combined with my passion for            teaching resulted in GeeksforGeeks as            we know today. My message to you, in            our inaugural edition of Geeks Digest,            would be that if you are looking for            a problem to work on, you don’t need            to look very far for it. All you should            do is to look around yourself.        </span>    </p>        <!-- Trigger toggleText() when the         button is clicked -->    <button onclick="toggleText()" id="textButton">        Show More    </button>      <script>        function toggleText() {              // Get all the elements from the page            var points =                 document.getElementById("points");              var showMoreText =                document.getElementById("moreText");              var buttonText =                document.getElementById("textButton");              // If the display property of the dots             // to be displayed is already set to             // 'none' (that is hidden) then this             // section of code triggers            if (points.style.display === "none") {                  // Hide the text between the span                // elements                showMoreText.style.display = "none";                  // Show the dots after the text                points.style.display = "inline";                  // Change the text on button to                 // 'Show More'                buttonText.innerHTML = "Show More";            }              // If the hidden portion is revealed,            // we will change it back to be hidden            else {                  // Show the text between the                // span elements                showMoreText.style.display = "inline";                  // Hide the dots after the text                points.style.display = "none";                  // Change the text on button                // to 'Show Less'                buttonText.innerHTML = "Show Less";            }        }    </script></body>  </html>
Output:
CSS-Misc
HTML-Misc
JavaScript-Misc
Technical Scripter 2020
CSS
HTML
JavaScript
Technical Scripter
Web Technologies
HTML
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Types of CSS (Cascading Style Sheet)
How to position a div at the bottom of its container using CSS?
Design a web page using HTML and CSS
Create a Responsive Navbar using ReactJS
How to Upload Image into Database and Display it using PHP ?
How to set the default value for an HTML <select> element ?
How to set input type date in dd-mm-yyyy format using HTML ?
How to Insert Form Data into Database using PHP ?
Hide or show elements in HTML using display property
REST API (Introduction)