Learn how to create auto looping banners using JavaScript! In this article, we learn how to rotate banners in a loop with a specified delay. The script will count the number of banners present in the specified location and set the automatic loop of all the banners.
Understanding the Source code:
There are 2 parts in this tutorial. The first part explains how to arrange the banners in a sequence and in the second one describes how the JavaScript function works.
Part1: The banners:
Each banner has to be placed inside individual “span” tags. All the banner collectively will be placed inside a single div.
By default, all the span tags [banners] will have the default “display” property as “none”. See the style sheet code for details:
div#partentDivID span{display:none;}
NOTE: In this “partentDivID” is the div tag’s Id. It is in side this div tag all the banners contain, in the order in which the banners needs to be rotated/looped. All the span tags [contains individual banner] will be in “display:none” status, initially.
Following is the HTML code in the body tag:
<div id="partentDivID"> <span>banner1</span> <span>banner2</span> <span>banner3</span> <span>banner4</span> <span>banner5</span> <span>banner6</span> <span>banner7</span> </div>
To add more banners in the loop, just add a new span tag along with the existing span tags and place the banner inside it.
Following is the Event code for the looping function:
<script type="text/javascript"> rotateBanner('partentDivID'); </script>
Part2: The JavaScript Code:
In the second part of this article, let’s analyze the JavaScript function flow.
Section 1:
var bannerLoopInstance = 0; function rotateBanner(BannerHolder){ setSpanID(BannerHolder); doRotation(BannerHolder); }
NOTES: “rotateBanner” funcntion is defined. At first, the function “setSpanID” is invoked and then the function “doRotation” is invoked.
Section2:
function setSpanID(BannerHolderForId){ var divInConcern = document.getElementById(BannerHolderForId); var spansIndivInConcern =divInConcern.getElementsByTagName("span"); var numberOfActiveSpans = spansIndivInConcern.length; for(L=0;L<numberOfActiveSpans; L++) { spansIndivInConcern[L].setAttribute("id",BannerHolderForId+L); } }
NOTES: The above function (setSpanID), counts the total number of span tags (banners) inside the specified div tag (partentDivID) and then sets a unique “id” value to each one of them.
Section3:
function doRotation(bannerHolderDiv){ var HolderdivInConcern = document.getElementById(bannerHolderDiv); var spansIndivInConcernBanner =HolderdivInConcern.getElementsByTagName("span"); numberOfActivebanner = spansIndivInConcernBanner.length; bannerHolderDiv4loop =bannerHolderDiv; document.getElementById(bannerHolderDiv4loop+0).style.display ="block"; setTimeout("rotatePlayBack(numberOfActivebanner,bannerHolderDiv4loop)",2000);? }
Notes: The above code, starts the initial looping display of banners and then after the specified time delay, a new function is invoked (rotatePlayBack).
Section4:
function rotatePlayBack(maxNumberOfBannersloopBack,bannerHolderDiv4loopback){ maxLoopVal = maxNumberOfBannersloopBack; currElementObj = bannerHolderDiv4loopback; rotatePlay(maxLoopVal,currElementObj); }
Notes: the above function sends a loop back routing to another function for mutual looping (rotatePlay), with no delay.
Section5:
function rotatePlay(maxNumberOfBanners,bannerHolderDiv4loop){ maxLoopNum = maxNumberOfBanners; bannerNameHolder = bannerHolderDiv4loop; document.getElementById(currElementObj+bannerLoopInstance).style.display ="none"; bannerLoopInstance++; if(bannerLoopInstance<maxNumberOfBanners){ document.getElementById(bannerHolderDiv4loop+bannerLoopInstance).style.display ="block"; setTimeout("rotatePlayBack(maxLoopNum,bannerNameHolder)",2000) } else { bannerLoopInstance=0; document.getElementById(bannerHolderDiv4loop+0).style.display ="block"; setTimeout("rotatePlay(maxLoopNum,bannerNameHolder);",2000); ? } ? }
NOTES: the above function loops through all the banners in the specified time-delay and displays them in the a loop.
Click here to download the source code: