Buenas conpañeros,
Tengo un pequeño problema con este tema, la cosa es que tengo que extraer unos datos de una base de datos MySQL y mostrarlos enla pagina con un scroll de texto horizontal que se repite una y otra vez. Aparte el usuario puede ir añadiendo más texto. encontre este codigo por internet.
Código:
//Specify the marquee's width (in pixels)
var marqueewidth="700px"
//Specify the marquee's height
var marqueeheight="25px"
//Specify the marquee's marquee speed (larger is faster 1-10)
var marqueespeed=0
//configure background color:
var marqueebgcolor="transparent"
//Pause marquee onMousever (0=no. 1=yes)?
var pauseit=1
//Specify the marquee's content (don't delete <nobr> tag)
//Keep all content on ONE line, and backslash any single quotations (ie: that\'s great):
var marqueecontent='<nobr><span class="style_scroll"><?PHP echo extraer_actMesAlrm($db,$mes); ?></span></nobr>'
////NO NEED TO EDIT BELOW THIS LINE////////////
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>')
}
}
hay tres líneas que tube que comentar para que me funcione. una de ellas es:
este me machacaba un método que tengo en el onload del body que se ejecuta periodicamente. lo comente y añadi:
Código HTML:
<body onLoad='javascript: updateMensajeria(); javascript: populate();'>
cuando entro en la página me funciona perfectamente, el problema es cuando el usuario añade al scroll, cada vez que añado se me acelera un poco. A la 4 vez que se añade...imaginaros...marcha to follao el scroll...
para añadir generé esta función
Código:
function addcadena(cadena){
//alert(cadena);
nchar2=cadena.length;
control=cadena.substring(0,1);
//alert(control);
cadena=cadena.substring(1,nchar2);
//alert(cadena);
if (!buscar(cadena)) {
aux=cadena.toUpperCase();
//alert(aux);
if (control == 0) cadena=aux.htmlEntities()+"… ** ";
else cadena=aux.htmlEntities()+" ** ";
//alert(cadena);
cadena2=marqueecontent;
//alert(cadena2);
nchar=cadena2.length;
//alert(nchar);
cadena3=cadena2.substring(33,(nchar-14));
//alert(cadena3);
cadena2='<nobr><span class="style_scroll">'+cadena3+cadena+'</span></nobr>';
//alert(cadena2);
marqueecontent=cadena2;
marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS
copyspeed=marqueespeed
pausespeed=(pauseit==0)? copyspeed: 0;
iedom=document.all||document.getElementById;
if (iedom)
document.getElementById("temp").innerHTML=marqueecontent;
populate();
}
}
He probado mil cosas sin conseguir nada y es por ello que acudo a ustedes...
Si me pueden ayudar... Gracias de antemano