Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    funzione dentro una funzione

    ciao ... questo script non funziona! In particolare firebug mi dice che la funzione itera() onn è definita. ma perchè?

    codice:
    <body>
    click here
    <h1 id="load" style="font-size: 250px"></h1>
    </body>
    </html>
    
    <script type="text/javascript">
    function carica(place){
    	// num di punti stampati ... viene sovrascritto dalla funzione itera()
    	num = 0;
    	// area in cui iniettare il messaggio di loading
    	target = document.getElementById("load");
    	// testo base a cui vengono aggiunti i puntini
    	textbase = "Loading";
    	// modulo da aggiungere iterativamente (il puntino nel nostro caso)
    	add_text = "";
    	
    	target.innerHTML = textbase;
    	
    	itera();		
    	
    	function itera(){
    	        if(num <= 3){
    			for(i=0; i<num; i++){
    				add_text += ".";
    			}
    			target.innerHTML = textbase + add_text;
    			num++;
    			add_text = "";
    			window.setTimeout("itera()", 400);
    		}
    		else {
    			num = 1;
    			add_text = "";
    			window.setTimeout("itera()", 0)
    		}		 
    	}
    }
    
    
    </script>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    non puoi chiamare una funzione prima di dichiararla....
    e poi la hai dichiarato dentro un'altra funzione....

    casomai cosi....
    Codice PHP:

    <body>
    [
    url="#"]click here[/url]
    <
    h1 id="load" style="font-size: 250px"></h1>
    </
    body>
    </
    html>

    <
    script type="text/javascript">
    function 
    carica(place){
        
    // num di punti stampati ... viene sovrascritto dalla funzione itera()
        
    num 0;
        
    // area in cui iniettare il messaggio di loading
        
    target document.getElementById("load");
        
    // testo base a cui vengono aggiunti i puntini
        
    textbase "Loading";
        
    // modulo da aggiungere iterativamente (il puntino nel nostro caso)
        
    add_text "";
        
        
    target.innerHTML textbase;
        
        
    itera();        
        
        
    }

    function 
    itera(){
        
            if(
    num <= 3){
                for(
    i=0i<numi++){
                    
    add_text += ".";
                }
                
    target.innerHTML textbase add_text;
                
    num++;
                
    add_text "";
                
    window.setTimeout("itera()"400);
            }
            else {
            
    //alert("d")
                
    num 1;
                
    add_text "";
                
    window.setTimeout("itera()"0)
            }         
        }
    </script> 
    ciao

  3. #3
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    si lo so che così funziona. ma io volevo tenere la cosa compatta in un'unica funzione. non è mica vietato dichiarare una f dentro un'altra.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    vabeh...non l'ho mai fatto perche non ha senso....
    cmq se vai a chiamare la funzione prima di dichiararla e' ovvio che dice che non e' definita...non credi?

  5. #5
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    quindi tu sugeriusci di spostare itera() all'inizio della funzione che la contiene? non funziano neanche lo stesso!

  6. #6
    non puoi chiamare una funzione prima di dichiararla....
    e poi la hai dichiarato dentro un'altra funzione....
    Una funzione dichiarata all'interno di un altra
    è un metodo privato della classe.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    e quindi?????

  8. #8
    E quindi dovrai chiamare la funzione/classe in
    questo modo:
    Codice PHP:
    var obj= new carica(place); 
    btw ma place a cosa serve ?


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Codice PHP:
    <script language="JavaScript" type="text/JavaScript">
    function 
    a() {
        function 
    b() {
              
    alert('sono b ;)');
            
    setTimeout(function() { b(); },1000);
        } 
        
    b();
    }
    a();
    </script> 
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    Per come è strutturata la funzione carica non ha molto senso parlare di oggetti e classi.
    Cmq per assegnare un metodo all'oggetto funzione si fa cosi:

    this.itera=function() { codice di itera}

    e poi la richiami con this.itera()

    PS whisher non credo si possa fare in quel modo.

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.