Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116

    setTimeout - Perche' non aspetta?

    Ciao a tutti..

    Allora, ho delle domande da noob (come al solito.. .ma vabe'...)

    iniziamo con quello che ho scritto:

    Codice PHP:
    function operation(cnt)
        {
            
    document.write"Sono stato chiamato per la " + (cnt 1) +"' volta;
    )
        }

    function 
    __onloadcnt )
        {
            
    operation(cnt);
            
            if ( 
    cnt 10 )
                {
                    
    cnt++;
                    
    setTimeout__onload(cnt) , 1000);
                }
        } 
    Riferimento alla pagina HTML:
    Codice PHP:
    <head>
        <
    SCRIPT Language="Javascript" type="text/javascript" src="html.it.js"></script>
    </head>

    </div>

        <SCRIPT Language="Javascript" type="text/javascript">
            __onload( 0 )
        </SCRIPT> 



    </body> 
    Bene, iniziamo con ordine:
    1. Stando a questa guida, dovrei passare il primo argomento della funzione setTimeout con le virgolette, ma se lo faccio non va... anche perche' (a rigor di logica) il materiale contenuto nelle virgolette viene trattato come testo... indi sbaglio io? e' sbagliata la guida?
    2. Il Timer non aspetta... e questo si era capito...
    3. Ma setTimeout come funzione precisamente? ha un valore di ritorno? in che modo interagisce col metodo clearTimeout


    Chiedo scusa per la mia ignoranza, e anche per aver aperto un nuovo post su questo argomento, ma in tutti quelli che ho letto non venivano spiegate queste cose, e in alcuni c'e' anche il riferimento alle virgolette del punto 1, ma li si dice di usarle....
    Boh... qualcuno mi sa illuminare?

    grazie in anticipo =)
    codice:
     $(".canaglia").show()

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    <head> 
    <SCRIPT Language="Javascript" type="text/javascript"> 
    function operation(cnt) { 
    	o = document.getElementById("pippo");
    	v = o.innerHTML; 
    	o.innerHTML = v + "Sono stato chiamato per la " + (cnt + 1) +"' volta;
    ";
    } 
    function x__onload( cnt ) { 
    	operation(cnt); 
    	if ( cnt < 10 ) { 
    		cnt++; 
    		setTimeout("x__onload("+cnt+")" , 1000); 
    	} 
    }
    </script> 
    </head> 
    <body>
    <div id="pippo"></div> 
    <SCRIPT Language="Javascript" type="text/javascript">  
    	x__onload( 0 ) 
    </SCRIPT>  
    </body>
    Ovviamente queso modo di scrivere non e' il migliore, ho cercato di rispettare per quanto possibile l'impostazione che hai dato tu perche' ti fosse piu' comprensibile.
    Comincia a ragionare sulle differenze rispetto al tuo, le altre risposte puoi trovarle in un qualunque manualetto o corso online, ne trovi di validissimi anche su questo sito.

    Scusa, ma un forum non e' il posto giusto per somministrare lezioni
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    /*global */
    GLOB = {};

    GLOB.prototype.operation = function (cnt) {
    var o = document.getElementById("pippo");
    var v = o.innerHTML;
    o.innerHTML = v + "Sono stato chiamato per la " + (cnt + 1) +"' volta;
    ";
    }
    GLOB.prototype.x__onload = function (cnt) {
    this.operation(cnt);
    if ( cnt < 10 ) {
    cnt++;
    setTimeout(function (GLOB) { GLOB.x__onload( cnt ) }, 1000);
    }
    }

    Mi permetto di suggerire questa alternativa, con queste due differenze:
    * tendo a considerare le variabili globali dei bug: quando carichi uno script da un altro sito, o incorpori uno script scritto da un altro programmatore, ogni singola variabile globale rischia di essere sovrascritta; inoltre sono più lente, perchè non indicizzabili internamente (GLOB.operation è un indirizzo di memoria, operation e basta è una stringa)
    * L'unica variabile globale (oggetto GLOB) viene opportunamente segnalata in modo chiaro per il programmatore e per tool come JSLint
    * passare del codice sotto forma di stringa è un'operazione più lenta, ma soprattutto l'interprete non sarà in grado di cercare (e segnalare) errori al suo interno prima del runtime.

    Spero di non sembrare saccente: il mio è solo un umile contributo, e quando altri mi fanno appunti di questo genere ne sono felice perchè posso mettere in discussione le mie tecniche.

  4. #4
    Originariamente inviato da in the web
    /*global */
    GLOB = {};

    GLOB.prototype.operation = function (cnt) {
    var o = document.getElementById("pippo");
    var v = o.innerHTML;
    o.innerHTML = v + "Sono stato chiamato per la " + (cnt + 1) +"' volta;
    ";
    }
    GLOB.prototype.x__onload = function (cnt) {
    this.operation(cnt);
    if ( cnt < 10 ) {
    cnt++;
    setTimeout(function (GLOB) { GLOB.x__onload( cnt ) }, 1000);
    }
    }

    Mi permetto di suggerire questa alternativa, con queste due differenze:
    * tendo a considerare le variabili globali dei bug: quando carichi uno script da un altro sito, o incorpori uno script scritto da un altro programmatore, ogni singola variabile globale rischia di essere sovrascritta; inoltre sono più lente, perchè non indicizzabili internamente (GLOB.operation è un indirizzo di memoria, operation e basta è una stringa)
    * L'unica variabile globale (oggetto GLOB) viene opportunamente segnalata in modo chiaro per il programmatore e per tool come JSLint
    * passare del codice sotto forma di stringa è un'operazione più lenta, ma soprattutto l'interprete non sarà in grado di cercare (e segnalare) errori al suo interno prima del runtime.

    Spero di non sembrare saccente: il mio è solo un umile contributo, e quando altri mi fanno appunti di questo genere ne sono felice perchè posso mettere in discussione le mie tecniche.
    Solo che se aggiungi metodi al prototype di GLOB poi ti serve un oggetto di tipo GLOB per richiamarne i metodi. Definendolo con {} probabilmente il browser ritornerà un errore tipo constructor not defined se cerchi di creare un'istanza di GLOB con new. Se non sbaglio.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    In realtà new è un po' sopravvalutato in JavaScript. Tutto quello che fa è creare un prototipo, che contiene una referenza all'oggetto padre. Si può ottenere lo stesso in questo modo:

    Object.new = function (obj) {
    function f() {}
    f.prototype = obj;
    return new f();
    };
    myDocument = Object.new(myDocument);

    Ma nel caso in cui "estendi" object, o un tipo primitivo, questa operazione alloca memoria inutilmente... meglio mettere le proprietà di Object direttamente nel costruttore, perchè ai fini pratici è la stessa cosa

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.