Newsgroup: it.comp.lang.javascript
Titolo: Perdita di valori

Salve nuovamente a tutti,
apro questo nuovo thread seppur riprendendo buona parte del mio thread
precedente "Problema con document.images".
Mi spiego, ho risolto il problema riguardante il ridimensionamento di
una popup in base alle dimensioni di un'immagine passata come
parametro di cui ringrazio per la pronta risposta.
Tuttavia c'è un particolare che mi sfugge riguardante la perdita di
valori di variabili.
Cerco di spiegarmi meglio:
- pagina htm
<body onLoad="carica();">
<div align="center">
<table border="0" cellspacing="0" bgcolor="#D1D4E1" cellpadding="10">
  <tr>
    <td>
     <img name="imgPopUp" border="0" src="img/ingrandimenti/" alt="">
    </td>
  </tr>
</table>
</div>
</body>
- codice js richiamato all'onload della pagina precedente 
function carica()
{
 var x, y;
 document.images["imgPopUp"].onload = function()
 {
  window.resizeTo(this.width + 30, this.height + 95);
  w = document.images["imgPopUp"].width;
  h = document.images["imgPopUp"].height;
  alert (w + ", " + h);
 }
 document.images["imgPopUp"].src = "img/ingrandimenti/" + foto;
 alert (w + ", " + h);
}
gli alert mi producono valori differenti, il primo alert è corretto
(le giuste dimensioni dell'immagine), il secondo alert no, i valori
sono persi (undefined) !!!
Nota: il comportamento è medesimo sia che la riga 
  document.images["imgPopUp"].src = "img/ingrandimenti/" + foto;
sia prima o dopo la chiamata della sotto-funzione che esegue il
resizeTo.
Mi sfugge perche al di fuori della sotto-funzione si perda il valore
delle var x e y che valorizzo nella sotto-funzione che dovrebbero
essere visibili a livello della funzione principale "carica" e,
correggetemi se sbaglio, anche nella sotto-funzione.
Ringrazio nuovamente tutti.
Fabrizio.

 correggetemi se sbaglio, anche nella sotto-funzione.
No, non è che li perde, è che non li ha ancora assegnati...
Per utilizzarli puoi farlo solo *DOPO* la onload del tag img (per esempio
puoi, al termine, richiamare una tua function "carica2()" e vedrai che w e
h saranno correttamente valorizzati).
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 h saranno correttamente valorizzati).
Hai ragione, il valore non è perso ma non ancora assegnato.
Deduco quindi che viene eseguita prima la funzione Carica()
dell'onload della pagina e poi quella dell'immagine, credevo che
essendo l'una all'interno dell'altra fossero quindi interfogliate !
Ti ringrazio per le tue delucidazioni, ti chiederei, sempre che tu
possa, darmi qualche indicazione su dove trovare documentazione su
come viene eseguito il codice di una pagina htm con funzioni js, in
definitiva non mi è ben chiaro con che ordine venga eseguito il
contenuto di una pagina: prima tutto il codice html, poi le funzioni
js ?
Piu che altro, ammetto che la documentazione in mio possesso è scarsa
e onestamente non ho manuali a mia portata, mi sono sempre basato su
quanto ho trovato on-line.... sai darmi qualche indicazione anche di
guide in rete ?
Grazie comunque per la tua disponibilità.
Fabrizio.

 essendo l'una all'interno dell'altra fossero quindi interfogliate !
Sì, se da una function ne chiami un'altra viene eseguita la seconda prima
di riprendere con la prima...
Ma leggi bene quello che stai facendo: stai assegnando all'evento onload
dell'immagine una function, non è che la stai eseguendo direttamente. Gli
stai dicendo: "quando avrà terminato di caricare l'immagine, se l'immagine
viene trovata, esegui questa function".
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.