Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459

    Tempi di reazione di uno script lenti

    Ciao a tutti!

    Ho modificato in questo modo uno script tra gli esempi
    della sezione Javascript facendo in modo che cambiasse immagine al click del mouse.

    codice:
    <SCRIPT LANGUAGE = "JavaScript">
    
    <!--
        window.onerror=null;
    
        nome1 = new Image(); nome1.src ="blu.jpg";
        nome2 = new Image(); nome2.src ="verde.jpg";
    
        attiva = false;
    
        function inactive(imgName)
        {
            if (attiva == true)
            {
    	    attiva = false;
                img = eval("nome2.src");
    	    document [imgName].src = img;
    	}
    	else
    	{
    	    attiva = true;
                img = eval("nome1.src");
    	    document [imgName].src = img;
    	}
        }
    
    // -->
    
    </SCRIPT>
    La pagina di prova: http://www3.csr.unibo.it/~panico/prova/prova.html

    Funziona abbastanza bene ma se clicco in tempi ravvicinati non cambia immagine. C'è un modo per risolvere il problema?

    Grazie!
    Linux user number 403381

    Stop TCPA!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    eval() e` meglio non usarlo (tra l'altro e` deprecato)

    codice:
        window.onerror=null;
    
        nome1 = new Image(); nome1.src ="blu.jpg";
        nome2 = new Image(); nome2.src ="verde.jpg";
    
        attiva = false;
    
        function inactive(imgName)
        {
            if (attiva) {
    	    attiva = false;
    	    document.images[imgName].src = nome2.src;
    	} else {
    	    attiva = true;
    	    document.images[imgName].src = nome1.src;
    	}
        }
    Cosi` dovrebeb fare la stessa cosa, ed essere molto piu` performante.

    Nota: Il tuo codice funzionava solo in IE, ora dovrebbe essere crossbrowser.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Grazie!

    Tra l'altro eval non ho ben capito a cosa serve, l'ho copiato pari pari dallo script che ho trovato nella sezione Javascript

    Linux user number 403381

    Stop TCPA!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    eval() esegue quanto scritto nella stringa del parametro, e serviva per trasformare una stringa nell'oggetto corrispondente. Era essenziale per i browser tipo NN4 e IE5.

    Nel tuo caso specifico non ha molto senso.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459

    Scusa se ne approfitto...

    Scusa ancora, ho provato a generalizzare lo script per usarlo su matrici di immagini, purtroppo ora non funge + niente

    codice:
                <script language="JavaScript">
                <!--
                window.onerror = null;
                on = new Image();
                on.src = "verde.jpg";
    
                off = new Image();
                off.src = "blu.jpg";
    
                stato = new Array(2);
                for (i = 0; i < 2; i++)
                {
                    stato[i] = new Array(5);
                    for (j = 0; j < 5; j++)
                        stato[i][j] = false;
                }
    
                nome = new Array(2);
                for (i = 0; i < 2; i++)
                    nome[i] = new Array(5);
    
                nome[0][0] = "A1";
                nome[0][1] = "A2";
                nome[0][2] = "A3";
                nome[0][3] = "A4";
                nome[0][4] = "A5";
                nome[1][0] = "B1";
                nome[1][1] = "B2";
                nome[1][2] = "B3";
                nome[1][3] = "B4";
                nome[1][4] = "B5";
    
                function switch(r, c)
                {
                    if (stato[r][c] == false)
                    {
    	            document [nome[r][c]].src = on.src;
    	        }
    	        else
    	        {
    	            document [nome[r][c]].src = off.src;
    	        }
    
    	        stato[r][c] = !stato[r][c];
                }
    C'è qualcosa che sbaglio? Sembra che non inizializzi i vettori...
    Le chiamate a switch sono queste:
    codice:
                    <td>
                        [img]blu.jpg[/img]
                    </td>
                    <td>
                        [img]blu.jpg[/img]
                    </td>
                    <td>
                        [img]blu.jpg[/img]
                    </td>
    
    ecc...
    Per provarlo...
    http://www3.csr.unibo.it/~panico/prova/sala.html

    Grazie!!!
    Linux user number 403381

    Stop TCPA!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Sicuramente switch non puo` essere il nome di una funzione (e` una istruzione JS).
    Avrei dei dubbi anche su on e off, che potrebbero essere parole chiave (ma forse nel tuo contesto vanno bene).

    Poi vedi questa altra riformulazione della tua funzione switch:
    codice:
    function myswitch(r, c) {
      document [nome[r][c]].src = (stato[r][c]) ? off.src : on.src;
      stato[r][c] ^= true;
    }
    veramente sul XOR per invertire una variabile booleana ho qualche dubbio, ma sarebbe elegantissimo.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188

    Correzione

    Correzione

    C'e` ancora un errore: un oggetto non si puo` montare in codesto modo; occorre scrivere:

    document.images[nome[r][c]].src = (stato[r][c]) ? off.src : on.src;

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Funziona tutto ora!
    Grazie di nuovo
    Linux user number 403381

    Stop TCPA!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.