Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ricorsione

  1. #1
    Utente di HTML.it L'avatar di killer
    Registrato dal
    Jan 2002
    Messaggi
    279

    ricorsione

    Ho questo codice di prova:
    codice:
    <Html>
    	<Head>
    		<Title>
    			Testing..
    		</Title>
    	<Script Language=Javascript>
    		function test(Obj)
    		{
    			var theObj;
    			for(i=0;i<document.getElementById(Obj).children.length;i++)
    			{
    				theObj = document.getElementById(Obj).children(i);
    				alert('Ctrl ' + i + ' = ' + theObj.id + ' - ' + theObj.tagName + ' - ' + theObj.type);
    				if(document.getElementById(theObj).children.length>0)
    					test(theObj.id);
    			}
    		}
    	</Script>
    	</Head>
    
    	<Body>
    
    	<Form Name=MainForm Action=# Type=POST>
    
    			<div id=d1>
    				<Input Type=text id=a>
    			</div>
    
    			<div id=d2>
    				<Input Type=text id=b>
    			</div>
    
    			<div id=d3>
    				<Input Type=text id=c>
    			</div>
    
    			<div id=d4>
    				<Input Type=button Id=Submit Value=Send onClick="Javascript:test('MainForm');">
    			</div>
    	</Form>
    
    	</Body>
    </Html>
    provate ad eseguirlo... cosa c'è che non va secondo voi?
    E' una funzione ricorsiva che esplora tutti fli elementi di un form

    _| killer |_

  2. #2
    Utente di HTML.it L'avatar di killer
    Registrato dal
    Jan 2002
    Messaggi
    279
    ma nn sa farlo nessuno??

    _| killer |_

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ho già avuto questo problema. Infatti la soluzione è semplice. Ad ogni richiamo della funzione bisogna fare come se fosse il primo richiamo. Quindi anche la variabile i deve essere var.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function test(Obj) {
     var i = 0;
     for(i=0;i<document.getElementById(Obj).children.length;i++) {
      var theObj = document.getElementById(Obj).children(i);
      alert('Ctrl ' + i + ' = ' + theObj.id + ' - ' + theObj.tagName + ' - ' + theObj.type);
      if(theObj.children.length>0) {
       test(theObj.id);
      }
     }
    }
    
    //-->
    </script>
    
    </head>
    <body>
    <Form name="MainForm" id="MainForm" Action=# Type=POST>
    
    			<div id=d1>
    				<Input Type=text id=a>
    			</div>
    
    			<div id=d2>
    				<Input Type=text id=b>
    			</div>
    
    			<div id=d3>
    				<Input Type=text id=c>
    			</div>
    
    			<div id=d4>
    				<Input Type=button Id=Submit Value=Send onClick="javascript:test('MainForm');">
    			</div>
    	</Form>
    
    </body>
    </html>

  4. #4
    Utente di HTML.it L'avatar di killer
    Registrato dal
    Jan 2002
    Messaggi
    279
    fantastico. funziona....
    Ho docuto usare i DIV xkè se metto una tabella mi crea un sacco di problemi.
    Non è che sai come aiutarmi??

    _| killer |_

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da killer
    fantastico. funziona....
    Ho docuto usare i DIV xkè se metto una tabella mi crea un sacco di problemi.
    Non è che sai come aiutarmi??
    Come hai fatto implica che devi settare un id ad ogni elemento. Con lo script che allego non passi più l'id ma l'oggetto dhtml.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function test(Obj) {
     var i = 0;
     for(i=0;i<Obj.children.length;i++) {
      var theObj = Obj.children(i);
      alert('Ctrl ' + i + ' = ' + theObj.id + ' - ' + theObj.tagName + ' - ' + theObj.type);
      if(theObj.children.length>0) {
       test(theObj);
      }
     }
    }
    
    //-->
    </script>
    
    </head>
    <body>
    <Form name="MainForm" id="MainForm" Action=# Type=POST>
    
    <table summary="">
    <tr>
    <td><Input Type=text id=a></td>
    </tr>
    <tr>
    <td><Input Type=text id=b></td>
    </tr>
    <tr>
    <td><Input Type=text id=c></td>
    </tr>
    <tr>
    <td><Input Type=button Id=Submit Value=Send onClick="javascript:test(document.getElementById('MainForm'));"></td>
    </tr>
    </table>
    </Form>
    
    </body>
    </html>

  6. #6
    Utente di HTML.it L'avatar di killer
    Registrato dal
    Jan 2002
    Messaggi
    279
    bravissimo... è proprio quello che cercavo.
    nfatti trovo stupido il fatto di avere un limite riguardande l'obblico di mettere un id ad ogni controllo.
    Adesso posso fare funzioni generiche che funzionano sempre...
    giusto?

    grazie
    mi sei stato di grande aiuto

    _| killer |_

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.