Newsgroup: it.comp.lang.javascript
Titolo: Sono Nuovo!! - Dilemma Amletico

Ciao, mi presento,
mi sono sottoscritto oggi al NG,
soprattutto perché sempre più di frequente ho
problemi impossibili col Javascript.
Eccovene uno:
chi mi sa rispondere in modo che io capisca è bravo.
In una pagina HTML ho un tag <IMG> con le sue brave proprietà ID, Style,
Src.
In un file .js esterno (lo so fare, non è lì il problema). ho varie robe.
Nel file js ho la riga
var Imag = document.all.tags("IMG");
per poi accedere all'oggetto IMG che mi serve con Imag[0].
Ora, se provo a manipolare le proprietà di Imag[0], ad esempio la
proprietà "left" di "Style", tipo
Imag[0].style.left = 120;
IE (Il tutto sotto IE5, mi ero dimenticato) dice che
Imag.0.style.left non è un oggetto.
Se provo al posto della riga di cui sopra a mettere
setTimeout("Imag[0].style.left = 120", 1500);
il tutto va alla perfezione.
Ho provato ad usare eval() ma non va.
Ora, com è possibile ciò?
Perché da solo non va e dentro a setTimeout va? Mistero.
E, più importante ancora, si può accedere alle proprietà di un'immagine in
modo più semplice,
magari da poter passare l'oggetto come parametro a funzioni???
Grazie a tutti
Walker Boh

ciao!
probabilmente perchè l'oggetto non è ancora stato creato...
è successo anche a me :
ho spostato lo script dopo il body ed è andato tutto a posto!
p.s.
occhi che:  blabla.style.left   penso funzioni solo con IE
per netscape devi usare:  document.blabla.left...
...
mi sembra...
--
      ----------
    --------------             
dodi...@tiscalinet.it
   --------|-------     
http://web.tiscalinet.it/sogniperduti
    -------|------                ICQ: 36959563
     -----_|-----
       - (_)# -

magari da poter passare l'oggetto come parametro a funzioni???
poi già farlo così....
nomefunzione(Imag)
passi tutto l'array Imag
nomefunzione(Imag[0])
passi solo un oggetto Image( )
P.S.: Se hai intenzione di far funzionare il tutto sotto NS, ti conviene cambiare tattica!
Il posizionamento dinamico degli oggetti in NS ha bisogno dei layer
---
the fly on the net
il webmaster più alto del mondo
"the devil inside" 
http://members.tripod.com/netfly
e-mail: 
net...@netbusiness.it

Zenkiu veri match per le risposte.
Ovvio, ma non ci avevo pensato.
Ehi! Visitate il mio sito, e ditemi cosa ne pensate!
Di JS non c'è una riga, la grafica fa schifo ma è vecchiotto (forse presto
lo
rifarò), ma il contenuto è bellino. L'idirizzo in fondo dopo la firma.
E' sorto un altro problema.
Le mie funzion possono modificare left e top dello
style dell'immagine, ma solo se li pongo a valori costanti, come 120
non posso fare nessuna delle due seguenti cose:
Imag[0].style.left += 3;
né
var valore = Imag[0].style.left + 3;
Imag[0].style.left = valore;
Cioè non si può fare né l'incremento né l'assegnamento uguale
ad una variabile.
!!!!!
Tantomeno poi posso andare a modificare il left secondo funzioni matematiche
varie.
Come kakkio faccio io allora a posizionare dinamicamente i miei oggetti
senza
dover mettere tutti i valori uno per uno dentro ai relativi setTimeout() ( o
al limite setInterval() ),
perché fare un movimento istantaneo non è bello....???
Certo che sto javascript a volte è davvero bastardo... e pignolo!!!!! (cfr.
3 uomini e una gamba)
Grazie in anticipo X risposte!!
Walker Boh
USF Mantainer
http://usf.home.dhs.org/
USF - Useless Software Foundation 1999

Altro problema:
Sul codice seguente:
 ************** INIZIO SCRIPT ************
var ITop = 0;
var ILeft = 0;
var CTop = 0;
function getImage()
{
 var Imeg = document.all.tags("IMG");
 StartObj(Imeg[0]);
};
function StartObj(obj)
{
 obj.pixelLeft = obj.style.left;
 obj.pixelTop = obj.style.top;
 ILeft = obj.pixelLeft;
 ITop = obj.pixelTop;
 CTop = obj.pixelTop;
 setTimeout("MoveFirstObj(obj)",250);   <<<<<
};
function MoveFirstObj(obj)
{
[...]
};
 ************** FINE SCRIPT ************
Nel punto indicato con <<<<<< dà errore:
"obj non è definito"
Se tolgo il setTimeout va.
Il fatto è che ho bisogno assolutamente di ritardare la chiamata di
funzione, e non
solo in questo punto, ma anche all'interno di MoveFirstObj(obj).
Comincio a non sopportare più il setTimeout.
Ho provato a fare
setTimeout("MoveFirstObj(" + obj + ")", 250);
ma dice (com'è giusto che sia) "object non è definito"
Stavolta proprio non capisco cosa non vada.
Grazie e scusate per il post lunghetto


"obj non è definito"
obj è una variabile definita all'interno della funzione, quando la funzione ha finito il suo compito obj viene terminato
Per farlo rimanere in vita dichiaralo prima della funzione:
var obj
function ecc. ecc.()
{
    ...
}
così è globale. Attento pero, essendo globale, non ti conviene usare il nome obj per altre variabili, creeresti dei problemi.
