Newsgroup: it.comp.lang.javascript
Titolo: doppio collegamento ipertestuale

Qualcuno sa mica dirmi come posso cabiare due frame con un unico
collegamento ipertestuale?
La page in oggetto 
http://www.marcosanti.it/Gallery_eng.htm
 ha quattro
frames (top, sx, central, under).
Io vorrei cambiare sx e central !
Clikkando su una scritta posta su sx, vorrei cambiare il frame sx e central.
Esempio clikkando su Mountains vorrei cambiare i due frames (sx, central)
E' possibile con javascript ?
ciao e grazie
marco s.

 Io vorrei cambiare sx e central !
Cambia nome a "top" e' una parola riservata nel DOM, rischi di far 
casino.
<a href="pagina_sx.htm" 
onclick="top.central.location.href='pagina_central.htm'" target="sx">
test me</a>
Questo e' un esempio.
In pratica cambi una pagina nel classico modo (link HTML), ed un altra 
tramite javascript.
Va da se' che puoi anche cambiare quanti frames vuoi con un solo click 
a quel punto se son piu' di due ti conviene mettere tutto in una 
funzione. Ad esempio:
function changeAllFrames(){
	top.sx.location.href="a.htm";
	top.central.location.href="b.htm";
	top.under.location.href="c.htm";
]
<a href="#" onclick="changeAllFrames();return false">click me</a>
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 <a href="#" onclick="changeAllFrames();return false">click me</a>
grazie 1000, oggi proverò il tutto :-)
ciao marco s.

 test me</a>
Questa è la sintassi che ho inserito nella mia pagina
http://www.marcosanti.it/Gallery_eng.htm
.
Inserita nella frame di sx sotto la voce Mountains, ma non funziona:
<p><a href="gallery/Mountains/Gallery_Mountains.htm"
onclick="top.sx.location.href='Gallery_left_MM.htm'"><font size="1"
face="Tahoma" color="#C0C0C0">Montagne</font></a></p>
Non mi cambia lateralmente la pagina 'Gallery_left_MM.htm'
p.s. se gli inserisco target="sx"
(onclick="top.sx.location.href='Gallery_left_MM.htm'" target="sx") mi apre
addiritura un'altra istanza di IE con solo la pagina centrale
gallery/Mountains/Gallery_Mountains.htm


 Inserita nella frame di sx sotto la voce Mountains, ma non funziona:
Questo perche', come hai scritto nel tuo post precedente, ci hai dato 
nomi fittizi dei frame, e non quelli reali che hai usato tu.. e' ovvio 
che se "copi e incolli" quel codice non funziona.
O ci davi i nomi che hai usato, oppure ti preoccupi di sostituirli 
quando copi il codice con quelli corretti :)


 quando copi il codice con quelli corretti :)
La prossima volta userň i nomi corretti cosě eviterň di fare questi casini
:-)
Ti ringrazio molto, grazie ai tuoi consigli sono riuscito ad ottenere quello
che volevo.
http://www.marcosanti.it/Gallery/Gallery.htm
 ... ora si "illuminano" i menů
a lato :-))
ciao marco s.

 a lato :-))
Mhmm.. non ti conviene usare un metodo del genere. Per ogni 
"illuminazione" devi usare una pagina diversa, e fare una richiesta al 
server.. non mi pare il caso. :)
Se ti basta che questo effetto sia visibile con i browser tipo IE5+, 
NN6+. Mozilla etc (ovvero tutti quelli conformi al DOM standard del 
w3c) puoi fare, dal frame "principale":
<script type="text/javascript">
function setSummary(nx){
	var doc=top.sommario.document;
	if (doc.getElementsByTagName){
		doc.getElementsByTagName("A")[nx].style.color="red";
	}
}
</script>
 
<a href="pagina_frame_principale.htm" onclick="setSummary(0);">rendi 
rosso il primo link del sommario</a>
<a href="pagina_frame_principale.htm" onclick="setSummary(1);">rendi 
rosso il secondo link del sommario</a>
Per esempio. In questo modo non devi ricaricare sommario ogni volta, 
ne' tantomeno fare pagine diverse.


 ne' tantomeno fare pagine diverse.
Appena ho un pò di tempo lo proverò e sicuramente ti romperò le scatole
perchè non ho capito qualcosa :-)
ciao e ancora grazie
marco s.

 ne' tantomeno fare pagine diverse.
Effettivamente sarebbe molto meglio.
ciao
marco s.

 Effettivamente sarebbe molto meglio.
Cerca di capire come mai non ti funziona. Ovvero il codice dovrebbe 
andare, se non va e' per un qualche errore. Quindi, prova a vedere che 
tipo di errore ti da' (magari usa Mozilla, Firebird o Netscape e guarda 
nella Javascript Console).
Puoi anche provare a debuggare in questo modo:
<script type="text/javascript">
function setSummary(nx){
	var doc=top.sommario.document;
	alert(top.sommario.document!=null) // se "true" ok
 
	if (doc.getElementsByTagName){
		alert("getElementsByTagName e' supportato");
		if (doc.getElementsByTagName("A").length==0){
			alert("Non c'e' nessun link nella pagina")
		}else{
			alert(doc.getElementsByTagName("A")[nx]!=null) // 
se true ok
			doc.getElementsByTagName("A")
[nx].style.color="red";
		}
	}
}
</script>
(ovviamente, riallinea le righe andate a capo)
Prova un po' seguendo questa linea, ovvero provando a inserire messaggi 
nei vari step della funzione, cosi' vedi eventualmente che percorso fa 
e cos'e' che non trova.
Una volta che questo ti funziona, abbiamo altri due passaggi da fare :)
(impostare la funzione sia per sommario che per principale, e far si 
che possa venir evidenziato un solo link alla volta)
