Newsgroup: it.comp.lang.javascript
Titolo: Funzione Toggle

Ciao a tutti.
Io ho una serie di div disposti nel seguente modo:
<a href="#" onclick="toggle(1)">on/off</a>
<div id="1">
   aaaaaaaaaaaaa
</div>
<a href="#" onclick="toggle(2)">on/off</a>
<div id="2">
   bbbbbbbbbbbbbbbbbb
</div>
<a href="#" onclick="toggle(3)">on/off</a>
<div id="3">
   ccccccccccccccc
</div>
e ho questa funzione javascritp:
	function Toggle(id){
   	        var paraname=id;
   	        var disp = getObjectStyle(paraname).display;
   	        var i=0;
   	        var obj=getObjectStyle(paraname);
 
		if(disp=="block"){getObjectStyle(paraname).display="none";}
		else{getObjectStyle(paraname).display="block";}
	}
Questa funzione mi permette di rendere visibile/invisibile un singolo div.
Ho bisogno invece che quando clicco su un link per rendere visibile il div
sottostante tutti gli altri diventino invisibili.
Ovviamente non voglio rendere invisibile a mano ogni singolo div :)
Come posso fare?
Grazie per la disponibilitŕ.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

    	        var disp = getObjectStyle(paraname).display;
Cos'è getObjectStyle? Immagino sia una function che ti restituisce un
riferimento cross-browser all'oggetto (sembrerebbe a style)...
potresti ciclare tutti i div, del tipo (la scrivo senza testarla):
 for(var i=0,obj=document.getElementsByTagName('div');i<obj.length;i++)
  obj.style.display=(
obj.id
==id?'block':'none');
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

Cristiano Larghi ha scritto:

Grazie mille per il suggerimento.
Posto la funzione completa che ho fatto nel caso qualcuno la volesse
utilizzare
/*
Parametri:
 id = è l'id dell'oggetto che voglio rendere visibile
 tagSearch = è il nome dei tag (es: 'div') che voglio nascondere
 tagExclude = è un array di nomi che contiene gli id dei tag che
voglio
              escludere da questo processo (es: array('div_1','div_2')
)
*/
function Toggle(id,tagSearch,tagExclude){
   	var countEx = 0;
   	var jump = false;
   	if(tagExclude.constructor==Array) {
   	   countEx = tagExclude.length;
   	}
   	arTag=document.getElementsByTagName(tagSearch);
   	for(var i=0;i<arTag.length;i++) {
   	   jump = false;
   	   for(var j=0; j<countEx; j++) {
   	      if(tagExclude[j]==arTag[i].id) {
   	         jump = true;
   	      }
   	   }
   	   if( jump==false ) {
            arTag[i].style.display = 'none';
   	   }
 
   	}
 
   	getObjectStyle(id).display="block";
}

    	getObjectStyle(id).display="block";
Se pensi possa interessare a qualcuno hai fatto bene a postarla, solo che è
inutile se non dici cos'è anche questa getObjectStyle...
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

Sono abbastanza profano di javascript, comunque serve per impostare lo
style di uno oggetto passandogli come parametro il nome dell'id.

 style di uno oggetto passandogli come parametro il nome dell'id.
Io dubito sia una function integrata in js, è una function che hai da
qualche parte. Non esiste nella reference che io sappia.
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

Hai ragione.
Questa riga
   getObjectStyle(id).display="bl­ock";
può essere sostituita da questa
   document.getElementById(id).style.display="bl­ock";

    document.getElementById(id).style.display="bl­ock";
Sì. ="block". Perdi però compatibilità IE4, se ti interessa:
 
http://www.criosoftware.it/default14.aspx
(magari è questo alla fin fine che faceva la tua function, con l'aggiunta
di style?)
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.