Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111

    autoscrolling text, variabili con nomi dinamici

    codice:
    function init() { 
    
    	for(var i=1; i<=4; i++){
    		eval("pos"+i) = i*200;
    	}
    	//pos1=200;pos2=400;pos3=600;pos4=800;
    	window.setInterval("autoscroll()",25);
    }
    
    function autoscroll() {
    
    	//alert("to nona vaca");
    	for(var i=1; i<=4; i++){
    		var ogg = document.getElementById("boxnum" + i);
    		var offw = ogg.offsetwidth;
    		var gino = eval("pos"+i);
    		gino -= 1;
    		if (gino < -201) { gino = offw; };
    		ogg.style.left = gino;
    		
    	}
    }
    mi dispiace aprire un nuovo thread per chiedere cose che certamente sono banali, ma questa volta leggere i vecchi thread non mi ha aiutato più di tanto.

    il mio scopo è avere dei div che scorrono in orrizontale verso sinistra.
    ho visto alcune mastodontiche applicazioni js che lo fanno alla perfezione, una tralaltro è disponibile tra gli esempi offerti da html.it, ma: a) non sono riuscito ad adattarle al mio sito; b) penso che sia il genere di cose che posso provare a fare per imparare qualcosa; c) mi preoccupo che il sito rimanga veloce e performante, e la mole di codice che ho visto in alcune applicazioni mi sembrava sproporzionata allo scopo.

    il codice qui sopra è ciò che sono riuscito a elaborare a forza di tentativi e scopiazzature, ma naturalmente non funziona.
    la consolle js di FF dice che pos1 non è definito, quindi c'è qualcosa che non va con il nome dinamico della variabile...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    Codice PHP:
    function init() {
        
        
    ida = new Array("boxnum1","boxnum2","boxnum3","boxnum4");
        
    wrap document.getElementById("bbox");
        
    offw wrap.offsetWidth;
        
    //alert(offw);
        
    dimensioni ();
        
        
    window.setInterval("autoscroll()",20);
    }


    function 
    autoscroll() {
        
        
    //wrap.onMouseOver = return;
        
    if (offw !== wrap.offsetWidth) { 
            
    dimensioni();
            
    offw wrap.offsetWidth;
        }
        var 
    i;
        for (
    i=0i<ida.lengthi++) { 
            
    off[i]--;     
            if (
    off[i] < 0-(offw/(ida.length-1))) { off[i] = offw; };
            
    ogg[i].style.left = (off[i] + "px");
        }
    }

    function 
    dimensioni() {
        
        
    ogg = new Array;
        
    off = new Array;
        var 
    i;
        for (
    i=0i<ida.lengthi++) { 
            
    ogg[i] = document.getElementById(ida[i]);
            
    off[i] = (offw/(ida.length-1))*i;
            
    ogg[i].style.left = (off[i] + "px");
            
    //alert(ogg[i]);
        
    }

    ce l'ho fatta finalmente!
    ho ancora una domanda:
    perchè il codice commentato ( //wrap.onMouseOver = return; ) non funziona? vorrei che quando si passa con il mouse sul div contentente i blocchi in movimento lo scrolling si fermasse

    PS: se qualcuno volesse usare il codice, init() va chiamata dopo aver caricato il codice html e css degli elementi da muovere, ad esempio alla fine della pagina.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    ho fatto un paio di piccole correzioni, posto il codice in caso qualcuno lo volesse usare. per quanto riguarda i css va impostato

    position:relative;
    overflow:hidden;

    per il div contenitore, mentre per gli elementi da far scorrere:

    position:absolute;



    Codice PHP:
    function initscroll(box,da,vel) {
        
        
    ida da.split("-");
        
    wrap document.getElementById(box);
        
    dimensioni ();
        
        
    window.setInterval("autoscroll()",vel);
    }
    function 
    autoscroll() {
        
        
    //wrap.onMouseOver = return;
        
    if (offw !== wrap.offsetWidth) { dimensioni();    }
        
    offw wrap.offsetWidth;
        var 
    i;
        for (
    i=0i<ida.lengthi++) { 
            
    off[i]--;
            var 
    mat offw/(ida.length-1);
            if (
    off[i] < 0-mat) { off[i] = offw; };
            
    ogg[i].style.width mat;
            
    ogg[i].style.left = (off[i] + "px");
        }
    }
    function 
    dimensioni() {
        
        
    offw wrap.offsetWidth//alert(offw);
        
    ogg = new Array;
        
    off = new Array;
        var 
    i;
        for (
    i=0i<ida.lengthi++) { 
            
    ogg[i] = document.getElementById(ida[i]);
            
    off[i] = (offw/(ida.length-1))*i;  
            
    ogg[i].style.left = (off[i] + "px");
            
    //alert(ogg[i]);
        
    }

    qualcuno per favore mi potrebbe dare qualche indizio su come affrontare il problema del onMouseOver?

    c'è anche un'altra cosa.. stranamente firefox impiega il processore in maniera rilevante, soprattutto abbassando molto il timer. questo non succede con IEe safari (in opera non va per un problema di css che devo ancora capire). come mai?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.