Search code examples
javascripttwitter-bootstrap-3progress-bar

how to get different data per minutes


I created some progress bars using boostrap 3 which will show some different results every time the page is refreshed. Here is the HTML for my progress bars:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="col-md-5">
  <p>Progress bar1</p>
  <div class="progress progress-striped active">
    <div class="progress-bar"></div>
  </div>
  <p>Progress bar2</p>
  <div class="progress progress-striped active">
    <div class="progress-bar"></div>
  </div>
  <p>Progress bar3</p>
  <div class="progress progress-striped active">
    <div class="progress-bar"></div>
  </div>
</div>

and this is my JavaScript function

$( document ).ready(function() {
    $(".progress-bar").each(function (index ) {
          var percent = Math.floor((Math.random() * 37) + 60);
            $(this).html(percent+"%");
            $(this).animate({width: percent+"%"}, 2500);
            if (percent<79){
              $(this).addClass('progress-bar-danger');
            } else if(parseInt(percent)<89){
              $(this).addClass('progress-bar-warning');
            } else{
              $(this).addClass('progress-bar-success');
            }
    })
});    

So, I want to make the generated data appear every 5 or 10 minutes. not every page is refreshed, how can i do that based on my script ? Thank you

Fiddle Link


Solution

  • How about using setInterval? Something like this

    $( document ).ready(function() {
    $(".progress-bar").each(function (index ) {
       
        setInterval(() => {
           var percent = Math.floor((Math.random() * 37) + 60);
            $(this).html(percent+"%");
            $(this).animate({width: percent+"%"}, 2500);
            if (parseInt(percent)<79){
              $(this).removeClass('progress-bar-danger');
              $(this).removeClass('progress-bar-warning');
              $(this).removeClass('progress-bar-success');
              $(this).addClass('progress-bar-danger');
            } else if(parseInt(percent)<89){
              $(this).removeClass('progress-bar-danger');
              $(this).removeClass('progress-bar-warning');
              $(this).removeClass('progress-bar-success');
              $(this).addClass('progress-bar-warning');
            } else{
              $(this).removeClass('progress-bar-danger');
              $(this).removeClass('progress-bar-warning');
              $(this).removeClass('progress-bar-success');
              $(this).addClass('progress-bar-success');
            }
        }, 300000);
        
        
       })
    });