Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Visibilità variabili

  1. #1

    Visibilità variabili

    Salve.
    Sto creando degli oggetti che mi permettono di lavorare in Ajax e DOM e ho riscontrato un problema relativo alla visibilità delle variabili.
    Il problema si verifica quando da una funzione ne chiamo un altra e questa deve modificare delle variabili globali.
    Ispezzionandole con Firebug su Firefox ho visto che, passando da una funziona all'altra, le variabili passano da definite e con valore assegnato a undefined.
    Stesso problema me lo da su IE.
    Di seguito un esempio:
    Codice:
    codice:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>test</title>
    <script language="javascript" type="text/javascript">
    var TestObj=new MyObj();
    function MyObj(){
    	this.InStr="";
    	this.InInt=0;
    	this.Multiplier=0;
    	this.OutInt=0;
    	this.Out=ObjOut;
    	function ObjOut(){
    		Calculate();
    		return "Value: "+this.InStr;
    	}
    	function Calculate(){
    		this.OutInt=this.Int*this.Multiplier;
    	}
    }
    function Test(){
    	var Value="";
    	TestObj.InStr="Hallo world!";
    	TestObj.InInt=100;
    	TestObj.Multiplier=3;
    	Value=TestObj.Out();
    	document.getElementById("test0").innerHTML=Value;
    	document.getElementById("test1").innerHTML="Valore: "+TestObj.InInt+"
    Moltiplicatore: "+TestObj.Multiplier+"
    Risultato: "+TestObj.OutInt;
    }
    function Clear(){
    	for (Counter=0;Counter<=3;Counter++){
    		document.getElementById("test"+Counter).innerHTML="";
    	}
    }
    </script>
    </head>
    <body>
    <input type="button" name="button" name="Test" value="Test" onclick="javascript: Test();" style="width: 100px;" />
    <input type="button" name="button" name="Clear" value="Clear" onclick="javascript: Clear();" style="width: 100px;" />
    <table width="800" border="1" cellspacing="0" cellpadding="3" style="font-family: Verdana; font-size: 10pt">
    	<tr>
    		<td valign="top" width="200">test0:
    
    		<div id="test0">
    		</div>
    		</td>
    		<td valign="top" width="200">test1:
    
    		<div id="test1">
    		</div>
    		</td>
    		<td valign="top" width="200">test2:
    
    		<div id="test2">
    		</div>
    		</td>
    		<td valign="top" width="200">test3:
    
    		<div id="test3">
    		</div>
    		</td>
    	</tr>
    </table>
    </body>
    </html>
    Il risultato che mi aspetto è che la funziona Calculate() esegua il prodotto tra le due variabili TestObj.InInt e TestObj.Multiplier ed invece restituisce 0.
    Lo stesso problema me lo da anche con le variabili dichiarate globalmente.
    Ho letto varia documentazione ma non ho trovato nessuna risposta.
    C'è qualcuno che mi sa dire se cosa ho sbagliato?
    O se non è prevista una cosa del genere in Javascript?
    Dopo aver perso molto tempo a risolvere il problema dello Sleep vorrei evitare grossi mal di testa pure per questo.
    Spero di essere stato chiaro.
    Grazie.
    A.

  2. #2
    magari così è più comprensibile:
    codice:
    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nuova pagina 1</title>
    <script language="javascript" type="text/javascript">
    var test=new Obj()
    function Obj(){
    	this.Valore1="";
    	this.Valore2="";
    	this.Calcola=ObjCalcola;
    	function ObjCalcola(){
    		this.Valore1="test1";
    		ObjCalcola2();
    		alert(this.Valore1+" "+this.Valore2);
    	}
    	function ObjCalcola2(){
    		this.Valore2="test2";
    	}
    }
    test.Calcola();
    </script>
    </head>
    
    <body>
    
    </body>
    
    </html>
    Non riesco a capire come mai Valore2 sia undefined...
    Speriamo ci sia qualcuno che mi sa dare una dritta.
    Grazie

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.