Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    218
    Questo secondo programma rassomiglia al precedente, solo che non usa Canvas.
    La funzione muove() è definita all'interno della funzione avvia() , viene riconosciuta ed eseguita.
    Mentre nel programma precedente la funzione tempo() è definita all'interno di avvia(), non viene riconosciuta come funzione e non viene eseguita.
    Perché questa differenza?
    Penso che si può definire una funzione all'interno di un'altra. O no? O che si deve fare per definirla all'interno di un'altra?
    Grazie.

    lanvoel

    codice:
    <!doctype html>
    <html>
    <body>
    <input type="button" value="avvia1" onclick="avvia()">
    <input type="button" value="ferma1" onclick="ferma()">
    <div id="div0" style="position: absolute; left=0px; top:30px; width:330px; height:180px; border: 3px solid blue;"></div>
    <div id="div1" style="position: absolute;  left=40px; top:35px; width:10px; height:10px; border: 1px solid red;"></div>
    <div id="div2" style="position: absolute;  left=0px; top:220px; width:330px; height:50px; border: 2px solid red";>numero urti:=</div>
    
    
    		<script>
    var cronometro;
    var sinistra=40;
    var alto=35;
    var dir_sin=1;
    var dir_alto=1;
    var contaUrti=0;
    	function avvia() {
    		cronometro=window.setInterval("muove()", 10);
    		}
    function muove() {
    	if (dir_sin==1){
    		sinistra++; 
    if (sinistra ==330) {
    	document.getElementById("div1").style.background="cyan";
    	document.getElementById("div0").innerHTML="tic";
    	document.getElementById("div0").style.background="blue";
    	document.getElementById("div0").style.color="cyan";
    	document.getElementById("div2").style.background="red";
    	dir_sin=-1;
         contaUrti++; 
         document.getElementById("div2").innerHTML="numero urti= "+contaUrti;
    }}
    if(dir_sin==-1){
    	sinistra--;
    	if(sinistra==10){
    		document.getElementById("div1").style.background="red";
            document.getElementById("div0").style.background="orange";
    	document.getElementById("div0").innerHTML="toc";
    	document.getElementById("div0").style.color="yellow";
            document.getElementById("div2").style.background="green";
    		dir_sin=1;
         contaUrti++; 
         document.getElementById("div2").innerHTML="numero urti= "+contaUrti;
    }}
    		
    		if (dir_alto==1){
    		alto++; 
    if (alto ==205) {
    	document.getElementById("div1").style.background="orange";
    	document.getElementById("div0").style.background="green";
    	document.getElementById("div0").innerHTML="tac";
    	document.getElementById("div0").style.color="white";
    	document.getElementById("div0").style.textAlign="center";
    	document.getElementById("div0").style.fontSize="50px";
    	document.getElementById("div0").style.fontFamily="Algerian";
    	document.getElementById("div2").style.background="red";
    	dir_alto=-1;
        contaUrti++; 
         document.getElementById("div2").innerHTML="numero urti= "+contaUrti;
    }}
    if(dir_alto==-1){
    	alto--;
    	if(alto==30){
    		document.getElementById("div1").style.background="green";
    	document.getElementById("div0").innerHTML="tec";
    	document.getElementById("div0").style.color="blue";
    		document.getElementById("div0").style.background="cyan";
    		document.getElementById("div2").style.background="orange";
    		dir_alto=1;
         contaUrti++; 
         document.getElementById("div2").innerHTML="numero urti= "+contaUrti;
    }}
    
    
    div1.style.left=sinistra+"px";
    div1.style.top=alto+"px";
    }
    function ferma() {
    	clearInterval(cronometro);
    	}
    </script>
    </body>
    </html>

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Quote Originariamente inviata da lanvoel Visualizza il messaggio
    Mentre nel programma precedente la funzione tempo() è definita all'interno di avvia(), non viene riconosciuta come funzione e non viene eseguita.
    Perché questa differenza?
    Penso che si può definire una funzione all'interno di un'altra. O no? O che si deve fare per definirla all'interno di un'altra?
    [...]
    No, nel codice precedente esiste una funzione tempo(), ma anche tempo1(), e pure una variabile tempo().

    In breve, si può senz'altro definire una funzione all'interno di un'altra e richiamarla, ovviamente sempre all'interno della funzione in cui è definita.

    In questo caso però, il codice è disordinato oltreché errato dal punto di vista logico, poiché vi sono identificatori uguali per cose diverse e callback che invocano funzioni identificandole come stringhe le quali hanno nomi in comune con variabili addirittura globali e isolati in funzioni che non le richiamano.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.