In this tutorial is presented a script that simulate a loading, displaying a progress bar.
When the loading progress bar is complete (reaches 100%), this script executes a JavaScript function.
You can use this script to show a banner, or any other HTML content, a certain number of seconds, then it displays a "Close" button to remove (hide) that content. Or to perform any other JavaScript instructions when the loading bar reaches 100%.
Besides the JavaScript functions, this script uses CSS styles to set the height, color, and the initial width 0 for the loading progress bar, as you can see in the code of the example below.


To use this script, add the following HTML and JavaScript code into your page, and the CSS code for the graphic styles.

Script to simulate a loading bar

<div id='loading'>Here you add the banner, or any HTML code.<div id='loadbar'>&nbsp;</div></div>
<button onclick='simLoad('loadbar');'>Click</button>

<script>
// by - coursesweb.net

var ldsec = 5; // define the number of secconds till the progress bar reaches 100%
var ldpercent = 5; // percentage for loading progress bar
var ldspeed = ldsec * 1000 / (100/ldpercent); // set the speed for progress bar

// data to be displayed in loading bar, when reaches 100%
// a tag that close the block with the content with the loading bar
var ldtxt = '<u style=\'cursor:pointer;\' onclick="document.getElementById(\'loading\').style.display=\'none\'">Close</u>'; 

// define a recursive function to set and add the progress bar
function simLoad(div) {
 // get the object with the ID from 'div', the tag which represents the progress bar
 var dvload = document.getElementById(div);
 ldpercent += 5; // increments the percentage
 if(ldpercent>100) ldpercent = 100; // ensure that percentages do not exceed 100

 // change the width of the progress bar, and display the percentage
 dvload.style.width = ldpercent+ '%';
 dvload.innerHTML = ldpercent+ '%';

 // if the percentage is less than 100, auto-calls this function
 // else, calls the function finLoad()
 if(ldpercent<100) setTimeout("simLoad('"+div+"')", ldspeed);
 else finLoad(dvload);
}

// function that can be executed when the progress bar is completed
// receives the object which contains the tag with the loading bar
function finLoad(divobj) {
 /** Here you can add JavaScript instructions to be executed when the progress bar reaches 100% **/

 // adds a close button in the loading bar, to close that block
 divobj.innerHTML = ldtxt;
}

/// simLoad('loadbar') // to display the loading bar once the page is loaded
</script>
- You can delete the "Click" button, if you call the simLoad() function in another way.

The CSS code

<style>
#loading {
 position:absolute;
 top:20%;
 left:40%;
 width:400px;
 margin:2px auto;
 border:1px solid #01da02;
 padding:3px;
 text-align:center;
}
#loading #loadbar {
 width:0%;
 height:25px;
 background-color:blue;
}
</style>
First we set the variables that define the number of seconds till the loading bar is complete, a percentage used to define the speed of the progress bar, and a HTML element that will be displayed in the progress bar when it reaches 100%.
Then is created a recursive functions, simLoad() that uses setTimeout() to auto-call itself till the percentage of the progress bar reaches 100. This function increments the width of the HTML element which represents the loading bar, and when it is completed, calls another function that can perform any JavaScript instructions you want to add in it.
See also the comments in code.

  - Example:
In the following example, the simLoad() function is accessed when a button "Click" is pressed, but if you want you can call it when the page is loaded, by deleting the three slashes at the end of the script code.
The number of secconds to complete the whole loading bar are set to 5.
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<style>
#loading {
 position:absolute;
 top:20%;
 left:40%;
 width:400px;
 margin:2px auto;
 border:1px solid #01da02;
 padding:3px;
 text-align:center;
}
#loading #loadbar {
 width:0%;
 height:25px;
 background-color:blue;
}
</style>
</head>
<body>
<h4>Example Simulate a Loading Progress Bar</h4>

 - Click on this button: <input type='button' onclick="simLoad('loadbar');" value='Click' />
<div id='loading'><img src='javascript/imgs/loading_progress.gif' alt='Simulate loading progress' width='340' height='280' /><div id='loadbar'></div></div>

<script>
// from; coursesweb.net/

var ldsec = 5; // define the number of secconds till the progress bar reaches 100%
var ldpercent = 5; // percentage for loading progress bar
var ldspeed = ldsec * 1000 / (100/ldpercent); // set the speed for progress bar

// data to be displayed in loading bar, when reaches 100%
// a tag that close the block with the content with the loading bar
var ldtxt = '<u style="cursor:pointer;" onclick="document.getElementById(\'loading\').style.display=\'none\'">Close</u>'; 

// define a recursive function to set and add the progress bar
function simLoad(div) {
 // get the object with the ID from 'div', the tag which represents the progress bar
 var dvload = document.getElementById(div);
 ldpercent += 5; // increments the percentage
 if(ldpercent>100) ldpercent = 100; // ensure that percentages do not exceed 100

 // change the width of the progress bar, and display the percentage
 dvload.style.width = ldpercent+ '%';
 dvload.innerHTML = ldpercent+ '%';

 // if the percentage is less than 100, auto-calls this function
 // else, calls the function finLoad()
 if(ldpercent<100) setTimeout("simLoad('"+div+"')", ldspeed);
 else finLoad(dvload);
}

// function that can be executed when the progress bar is completed
// receives the object which contains the tag with the loading bar
function finLoad(divobj) {
 /** Here you can add JavaScript instructions to be executed when the progress bar reaches 100% **/

 // adds a close button in the loading bar, to close that block
 divobj.innerHTML = ldtxt;
}

/// simLoad('loadbar') // to display the loading bar once the page is loaded
</script>
</body>
</html>

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which HTML5 tag is indicated to be used as container for menu with navigation links in Web site?
<section> <nav> <article>
<nav><ul>
 <li><a href="http://coursesweb.net/css/" title="CSS Course">CSS Course</a></li>
 <li><a href="http://www.marplo.net/jocuri/" title="Flash Games">Flash Games</a></li>
</ul></nav>
Which CSS property shifts an item horizontally to the left or right of where it was?
text-align clear float
.some_class {
  width: 30%;
  float: left;
}
Click on the Math object method which returns x, rounded downwards to the nearest integer.
Math.ceil(x) Math.abs(x) Math.floor(x)
var num = 12.34567;
num = Math.floor(num);
alert(num);       // 12
Indicate the PHP function which returns the number of characters in string.
mb_strlen() count() stristr()
$str = "string with utf-8 chars åèö";
$nrchr = mb_strlen($str);
echo $nrchr;        // 30
Display / Simulate a Loading Progress Bar

Last accessed pages

  1. Insert, Select and Update NULL value in MySQL (41034)
  2. $_GET, $_POST and $_REQUEST Variables (27414)
  3. Contact page - CoursesWeb (16164)
  4. Tabs effect with CSS (16860)
  5. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (22999)

Popular pages this month

  1. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (1434)
  2. Tabs effect with CSS (1369)
  3. Contact page - CoursesWeb (1366)
  4. Insert, Select and Update NULL value in MySQL (791)
  5. PHP getElementById and getElementsByTagName (622)