Foros del Web » Programando para Internet » Javascript »

scroll de texto horizontal

Estas en el tema de scroll de texto horizontal en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/09/2008, 08:21
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
scroll de texto horizontal

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:

Código:
//window.onload=populate
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.