PDA

View Full Version : Cross browser Marquee script- can I add text to display randomly?



a1000w
08-25-2010, 07:13 PM
1) Script Title: Script Title: Cross browser Marquee script

2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex2/cmarquee.htm

3) Describe problem: I'd like to be able to include random text in this scroller each time someone refreshes the page. Is that possible? Any ideas?

jscheuer1
08-26-2010, 02:12 AM
Remember, random means random, so there will be some repeats. The more texts you specify, the less chance of repeats. Try this modification out:


<script type="text/javascript">

/*
Cross browser Marquee script- Dynamic Drive (www.dynamicdrive.com)
For full source code, 100's more DHTML scripts, and Terms Of Use, visit http://www.dynamicdrive.com
Credit MUST stay intact
modified here for random content by jscheuer1 in http://www.dynamicdrive.com/forums/
*/

//Specify texts. Keep all each texts' content on ONE line, and backslash any single quotations (ie: that\'s great):

var texts = [];
texts[0] = '<font face="Arial">Thank you for visiting <a href="http://www.dynamicdrive.com">Dynamic Drive.</a> If you find this script useful, please consider linking to us by <a href="../link.htm">click here.</a> Enjoy your stay!</font>';
texts[1] = 'Some other really long line of text, this one without any styling or links, but it could have. Basically I\'m just trying to take up enough space for this to work.';
texts[2] = 'Your astounding kittens entirely sparkle for their swaggering toads. His agonizing taxonomies beneficially accept his sweeping submarines. Their spicy tongues alternatively deceive their a cappella transistors.';
texts[3] = 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using \'Content here, content here\', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for \'lorem ipsum\' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).';
texts[4] = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi a est eu leo porttitor faucibus. Aliquam erat volutpat. Vestibulum hendrerit turpis a felis viverra cursus. Pellentesque et posuere lorem. Quisque tristique libero non nisl consectetur sed malesuada justo tempus. Duis a felis non orci euismod consequat eu sed nulla. Nunc commodo metus cursus justo cursus non hendrerit felis elementum. Nam ac ante eu nunc consectetur condimentum. Proin pharetra, ante non ornare facilisis, tellus ipsum laoreet elit, blandit placerat elit erat eget dui.';

//Specify the marquee's width (in pixels)
var marqueewidth="300px"
//Specify the marquee's height
var marqueeheight="25px"
//Specify the marquee's marquee speed (larger is faster 1-10)
var marqueespeed=2
//configure background color:
var marqueebgcolor="#DEFDD9"
//Pause marquee onMousever (0=no. 1=yes)?
var pauseit=1


////NO NEED TO EDIT BELOW THIS LINE////////////

var marqueecontent='<nobr>' + texts[Math.floor(Math.random() * texts.length)] + '</nobr>'
marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS
var copyspeed=marqueespeed
var pausespeed=(pauseit==0)? copyspeed: 0
var iedom=document.all||document.getElementById
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+marqueecontent+'</span>')
var actualwidth=''
var cross_marquee, ns_marquee

function populate(){
if (iedom){
cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
cross_marquee.style.left=parseInt(marqueewidth)+8+"px"
cross_marquee.innerHTML=marqueecontent
actualwidth=document.all? temp.offsetWidth : document.getElementById("temp").offsetWidth
}
else if (document.layers){
ns_marquee=document.ns_marquee.document.ns_marquee2
ns_marquee.left=parseInt(marqueewidth)+8
ns_marquee.document.write(marqueecontent)
ns_marquee.document.close()
actualwidth=ns_marquee.document.width
}
lefttime=setInterval("scrollmarquee()",20)
}
window.onload=populate

function scrollmarquee(){
if (iedom){
if (parseInt(cross_marquee.style.left)>(actualwidth*(-1)+8))
cross_marquee.style.left=parseInt(cross_marquee.style.left)-copyspeed+"px"
else
cross_marquee.style.left=parseInt(marqueewidth)+8+"px"

}
else if (document.layers){
if (ns_marquee.left>(actualwidth*(-1)+8))
ns_marquee.left-=copyspeed
else
ns_marquee.left=parseInt(marqueewidth)+8
}
}

if (iedom||document.layers){
with (document){
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
if (iedom){
write('<div style="position:relative;width:'+marqueewidth+';height:'+marqueeheight+';overflow:hidden">')
write('<div style="position:absolute;width:'+marqueewidth+';height:'+marqueeheight+';background-color:'+marqueebgcolor+'" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
write('<div id="iemarquee" style="position:absolute;left:0px;top:0px"></div>')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee" bgColor='+marqueebgcolor+'>')
write('<layer name="ns_marquee2" left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
write('</ilayer>')
}
document.write('</td></table>')
}
}
</script>

a1000w
08-27-2010, 04:29 PM
Thank you! Works perfectly in all browsers!