Visualizzazione risultati 1 fino 5 di 5

Discussione: [JS] Avanzare di uno richiamando una funzione

  1. #1
    Guest

    Predefinito [JS] Avanzare di uno richiamando una funzione

    Ciao a tutti!
    Avrei bisogno di un altro aiuto per uno script. Io ho un link del tipo:
    Codice HTML:
    <a href="javascript:avanti()">Avanti</a>
    e vorrei che cliccandoci sopra l'immagine
    Codice HTML:
    <img src="0.jpg" id="immagine">
    diventi prima 1.jpg poi 2.jpg e così via.
    Per adesso uso uno script che fa uso dei cookie, ma lo trovo disordinato e "pesante".
    Questo è lo script attuale:
    Codice HTML:
    <script>
    setCookie("id","0");
    
    function setCookie(name, value, expires, path, domain, secure) {
    	document.cookie= name + "=" + escape(value);
    }
    
    function getCookie(name) {
    	var dc = document.cookie;
    	var prefix = name + "=";
    	var begin = dc.indexOf("; " + prefix);
    	if (begin == -1) {
    		begin = dc.indexOf(prefix);
    		if (begin != 0) return null;
    	} else {
    		begin += 2;
    	}
    	var end = document.cookie.indexOf(";", begin);
    	if (end == -1) {
    		end = dc.length;
    	}
    	return unescape(dc.substring(begin + prefix.length, end));
    }
    
    
    function avanti(){
    	var m=getCookie("id");
    	var n=m+1;
    	document.getElementById('immagine').src=n+".jpg";
    	setCookie("id",n);
    } 
    </script>
    <a href="javascript:avanti()">Avanti</a>
    ma come potete vedere è una cosa lunga e disordinata.

    Avete qualche idea su come far avanzare (ed eventualmente indietreggiare) il numero dell'immagine?
    Grazie!

  2. #2
    Guest

    Predefinito

    bhè...nn è molto complicato...
    Codice HTML:
    <script language="javascript">
    function avanti(o){
    var x=o.src;
    x= x.split("/")
    var y=x[x.length - 1].lastIndexOf(".");
    y = x[x.length - 1].substr(0, y);
    y++;
    y += ".jpg"
    o.src=y;
    }
    function indietro(o){
    var x=o.src;
    x= x.split("/")
    var y=x[x.length - 1].lastIndexOf(".");
    y = x[x.length - 1].substr(0, y);
    y--;
    y += ".jpg"
    o.src=y;
    }
    </script>
    <img id="im" src="1.jpg">
    <a href="javascript:avanti(document.getElementById('im'))">Avanti</a>
    <a href="javascript:indietro(document.getElementById('im'))">Indietro</a>

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Provo a scrivere uno script più semplice, che per funzionare però deve avere come nomi di file 0.jpg, 1.jpg, ... etc. SENZA SALTI DI NUMERO e nella stessa cartella della pagina in cui sta lo script:
    Codice HTML:
    <SCRIPT TYPE="text/javascript">
    // numero di immagine iniziale (beh, non è obbligatorio 0, ma deve essere lo stesso del codice HTML)
    var img_nr = 0
    // numero totale di immagini (questo numero NON deve essere un nome di file, perché non sarà mai caricato!)
    var img_tot = ...
    
    function avanti (id_img)
    {
       var img = document.getElementById (id_img)
       img_nr = (img_nr + 1) % img_tot
       img.src = img_nr + '.jpg'
    }
    
    function indietro (id_img)
    {
       var img = document.getElementById (id_img)
       img_nr = (img_tot + img_nr - 1) % img_tot
       img.src = img_nr + '.jpg'
    }
    </SCRIPT>
    ...
    <IMG SRC="0.jpg" WIDTH="..." HEIGHT="..." ID="my_img">
    <A HREF="javascript:avanti('my_img')">Avanti</A>
    <A HREF="javascript:indietro('my_img')">Indietro</A>
    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    Guest

    Predefinito

    Ok, grazie!!
    Intanto ho provato a farmi uno script (funziona!!) ed è simile a quello di dementialsite..

    Grazie a tutti e due!!

  5. #5
    Guest

    Predefinito

    bene, chiudo!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •