Newsgroup: it.comp.lang.javascript
Titolo: problema con location.href

Ciao a tutti e grazie per aver risposto al mio post precedente.
Avrei un'altra domanda da porvi:
ho creato in una pagina prova.html un visualizzatore di banner, che fa
apparire in successione 4 banner pubblicitari.
Ho operato in questo modo: ho creato l'oggetto banner:
function mio_banner(immagine,indirizzo) {
    this.immagine=immagine;
    this.url=indirizzo;
}
ho poi creato un array di tali banner (array di 4 elementi) chiamiamola per
esempio lista_banner, ed una funzione che fa apparire in successione tali
banner.
e poi una funzione che su di un evento onClick mi dovrebbe portare all'url
appartenente a lista_banner[num].url
function seleziona()
    cliccato=true;
    location.href=lista_banner[num].url;
}
dove cliccato è una variabile booleana che mi serve nella funzione di
visualizzazione dei banner.
Il tutto viene messo opportunamente in una pagina html ed il problema sorge
quando scrivo il tag per il banner:
quando scrivo
<img src="banner1.gif"...... onClick="seleziona();return true"...........>
(questo l'ho visto in un altro script)
tutto funziona correttamente e la mia pagina si collega al sito desiderato
mentre se scrivo solo:
<img src="banner1.gif"...... onClick="seleziona"...........>
nella pagina appare tutta la cartella in cui si trova il mio file
prova.html; (mi sembra che è proprio ciò che fa location.href).
Ora vorrei sapere perchè con il return true tutto funziona correttamente e
senza no?
Grazie ancora tantissimo
Ciao

 senza no?
Non so rispondere alla tua domanda, ma è sbagliato mettere un onClick() in 
un'immagine, perché non è un event-handler per immagini (anche se IE lo fa 
funzionare, come tante altre cose).
Il modo corretto è:
<A HREF="javascript:seleziona()"><IMG SRC...></A>
In ogni caso se "seleziona()" è una funzione devi per forza metterci le 
parentesi alla fine.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 Ciao, Riccardo
infatti scusa non mi sono spiegato bene la mia linea di js č
<a href="" onClick="seleziona();return false" onMouseover="aggiorna()">
(dove aggiorna č una funzione che mi fa apparire il link del banner)
cosě scritto tutto mi funziona bene
se scrivo cosě
<a href="" onClick="seleziona()" onMouseover="aggiorna()">
no.

 
Ok, adesso è chiaro.
Anche se hai aggiunto un event-handler resta sempre l'href che lavora.
Se provi un link come questo (con HREF="", come hai scritto tu) l'effetto è lo 
stesso, cioè viene visualizzata la cartella, questo perché fai un href a nessun 
file, quindi il browser cerca di caricare la pagina di default (un server ti 
restituirebbe la index.htm).
Invece se metti un return false nell'onClick() vanifichi l'effetto sull'HREF 
del click, anche se la funzione viene eseguita lo stesso perché nella serie di 
eventi viene prima del return false.
E' anche per evitare problemi come questo che è consigliabile fare <A 
HREF="javascript:seleziona()">...</A> invece che come hai fatto tu, in questo 
modo il click esegue l'href che, poi, di fatto è una chiamata a JavaScript.
Se proprio non puoi fare a meno dell'onClick() perché ti sta troooooooppo 
simpatico almeno usa questa sintassi:
<A HREF="#" onClick="seleziona()">...</A>
Così il browser, pur eseguendo l'HREF cercherà un'ancora (inesistente) nella 
stessa pagina caricata, quindi di fatto tornerà al top della pagina, e 
risparmierai comunque il "return true".
Spero sia chiaro almeno a te..... io rileggendolo non ho mica capito... :-) 


 Ciao, Riccardo
rileggendolo un paio di volte ho afferrato qualcosa :))))))
cmq tutto ok grazie mille :))))