Search code examples
javascriptjquerycsshtmltimeout

Show and hide divs at a specific time interval using jQuery


I would like to show divs at a specific interval (10 seconds) and show next div and as go on and repeat the same.

**

Sequence :

** On 10th second show div1 , hide other divs ,
After 5seconds interval Show div 2 and hide other divs,
After 5 seconds interval Show div 3 and hide other divs,
and repeat the same for every 10 seconds.


Code Follows:


<div id='div1' style="display:none;"> 
  <!-- content -->
</div>

<div id='div2' style="display:none;"> 
  <!-- content -->
</div>

<div id='div3' style="display:none;"> 
  <!-- content -->
</div>

Solution

  • Working Example here - add /edit to the URL to play with the code

    You just need to use JavaScript setInterval function

    $('html').addClass('js');
    
    $(function() {
    
      var timer = setInterval(showDiv, 5000);
    
      var counter = 0;
    
      function showDiv() {
        if (counter == 0) {
          counter++;
          return;
        }
    
        $('div', '#container')
          .stop()
          .hide()
          .filter(function() {
            return this.id.match('div' + counter);
          })
          .show('fast');
        counter == 3 ? counter = 0 : counter++;
    
      }
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
    <head>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
      <title>Sandbox</title>
      <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
      <style type="text/css" media="screen">
        body {
          background-color: #fff;
          font: 16px Helvetica, Arial;
          color: #000;
        }
        
        .display {
          width: 300px;
          height: 200px;
          border: 2px solid #000;
        }
        
        .js .display {
          display: none;
        }
      </style>
    </head>
    
    <body>
      <h2>Example of using setInterval to trigger display of Div</h2>
      <p>The first div will display after 10 seconds...</p>
      <div id='container'>
        <div id='div1' class='display' style="background-color: red;">
          div1
        </div>
        <div id='div2' class='display' style="background-color: green;">
          div2
        </div>
        <div id='div3' class='display' style="background-color: blue;">
          div3
        </div>
        <div>
    </body>
    
    </html>

    EDIT:

    In response to your comment about the container div, just modify this

    $('div','#container')
    

    to this

    $('#div1, #div2, #div3')