Newsgroup: it.comp.lang.javascript
Titolo: Link ad altre pagine da menu a discesa come si fa?

Ciao a tutti
Cosa devo indicare nelle proprietà campo modulo per usarlo come link a tot
altre pagine ?
Io vorre fare un menu a discesa con elencati 20 nomi ai quali poi collegare
altrettante pagine....
Con il menu a discesa vorrei linkare a quella selezionata nel frame di
destra...
Mi aiutate ?
Grazie !!
Marco

 destra...
Usa lo script che segue, se hai problemi fai un click.
-------- begin pasing -------------------------------------------------------
<HTML>
<HEAD>
  <TITLE>URL update on < SELECT > change</TITLE>
<SCRIPT>
<!--
// Script by 
ricc...@jsdir.com
function Vai()
  {
  url=document.modulo.dove.options[document.modulo.dove.selectedIndex].value;
  self.location.href=url+".html";
  }
/***************************************************************************
 * "self" aggiorna il frame corrente.
 * Visto che tu lavori in un frameset devi sostituirlo con il valore opportuno
 *
 * Il nome delle pagine e' il VALUE delle OPTIONS nel SELECT.
 * A questo valore la funzione Vai() si preoccupa di aggiungere 
 * la desinenza ".html"
 * A voler essere pignoli puoi anche togliere "pagina" dalle OPTIONS, lasciare
 * solamente i numeri e modificare la funzione come segue 
 * (i due slash servono per commentare, non vanno copiati.
 */
//    self.location="pagina"+url+".html"
/****************************************************************************/ 
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="modulo">
<SELECT NAME="dove" onChange="Vai()">
<OPTION VALUE="pagina1">Pagina 1 </OPTION>
<OPTION VALUE="pagina2">Pagina 2 </OPTION>
<OPTION VALUE="pagina3">Pagina 3 </OPTION>
<OPTION VALUE="pagina4">Pagina 4 </OPTION>
<OPTION VALUE="pagina5">Pagina 5 </OPTION>
<OPTION VALUE="pagina6">Pagina 6 </OPTION>
</SELECT>
</BODY>
</HTML>
----------------------------------------------------- end pasting -------
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
Need a JavaScript password?
http://www.jspoint.it/staffscripts/script021/PazzWordProva/ingresso.html
------------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
                      Arthur Charles Clarke
------------------------------------------------------------------------

Perdonami ma il tuo esempio funziona benissimo fino a quando non ci metto le
mani io !
Ho sostituito a "self" ....."destra"  perchè il modulo c'e l'ho a sinistra
ma la pagina da aggiornare è quella del frame di dx
poi siccome le pagine che devo prendere sono in una cartella a livello
inferiore ho iniziato a mettere slash desti e sinistri a destra e a manca
senza venirne a capo. in pratica ho trasformato in tanti modi lo script ma
senza risultati...mi sento un verme.
com'è la sintassi corretta per avere il link a dx? e come devo fare se i
file da "prendere" sono in una cartella inferiore ?
Ciao e scusa per l'alto grado di mentecattaggine.
Marco

Un altra cosa strana che ho notato č che non tutte le mie pagine hanno
l'estensione html...devo aver fatto un po di casino, puň essere quello il
motivo ?
Tra l'ltro se tento di vedere le estensioni con l'opzione della cartella
 win 2000 ) mi viene la schermata blu e mi scarica la memoria fisica..carino
vero ?
Non so piů che fare.

 senza risultati...mi sento un verme.
Considera che la path di partenza è quella della pagina dove si trova lo 
script, se hai dubbi cambia in:
  top.frames['destra'].location.href="/...."+url+".html";
dove al posto dei .... ci metti il percorso a partire da ".it".


 Non so piů che fare.
Un cero a... [santo a scelta]  :-)


Ora funzia con una stranezza :
il primo dei link parte solo se faccio partire il secondo, poi lo seleziono
di nuovo e stavolta parte.
Cosa può essere ?
Sei una persona fantastica e ti chiedo scusa per tutto il tempo che ti
faccio perdere.
Ti piacciono gli scacchi ?
tra qualche giorno potrai seguire un corso su internet grazie al tempo che
perdi con me :
web.tiscalinet.it/valpochess
Grazie ancora
Marco

 Cosa può essere ?
Assolutamente normale, solo che non ci avevo pensato.
Se il primo è selezionato non cambia, dunque non scatta l'event-handler.
Cambia la funzione ed il select in questo modo, tieni conto della correzione 
per i frames come da ultimo repost (non vorrai che faccio tutto io no? ;-))))
<HTML>
<HEAD>
  <TITLE>URL update on < SELECT > change</TITLE>
<SCRIPT>
<!--
// Script by 
ricc...@jsdir.com
function Vai()
  {
  url=document.modulo.dove.options[document.modulo.dove.selectedIndex].value;
  url!="fake"?self.location.href=url+".html":null;
  }
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="modulo">
<SELECT NAME="dove" onChange="Vai()">
<OPTION VALUE="fake">Scegli la pagina </OPTION>
<OPTION VALUE="pagina1">Pagina 1 </OPTION>
<OPTION VALUE="pagina2">Pagina 2 </OPTION>
<OPTION VALUE="pagina3">Pagina 3 </OPTION>
<OPTION VALUE="pagina4">Pagina 4 </OPTION>
<OPTION VALUE="pagina5">Pagina 5 </OPTION>
<OPTION VALUE="pagina6">Pagina 6 </OPTION>
</SELECT>
</BODY>
</HTML>


di nuovo e stavolta parte.
nessuna stranezza: è che lo script funziona ogni volta che il campo
select viene *cambiato*, non ogni volta che viene *selezionato* un
elemento. L'elemento 0 ad esempio è già selezionato, quindi
selezionandolo una seconda volta, in realtà, il campo non cambia. Le
soluzioni sono:
1 - un pulsante "VAI", con un onclick="Vai()"
2 - un option vuoto come primo elemento, e una funzione Vai() così
modificata:
function Vai(){
if(document.modulo.dove.selectedIndex){ // scarta il primo elemento
url=document.modulo.dove.options[document.modulo.dove.selectedIndex].value;
    self.location.href=url+".html";
}
}
3 - un select così modificato:
<SELECT NAME="dove" onChange="Vai()" size="6">
anzichè una lista a discesa, sarà una lista normale, dunque sarà
possibile non avere alcun item selezionato
