Newsgroup: it.comp.lang.javascript
Titolo: show/hide solo su alcune select

ciao a tutti,
ho una serie di select, e solo alcune hanno ID (univoco, ovviamente).
vengono scritte da PHP e non so in partenza quale sia il loro ID, 
poiche' gli viene assegnato dinamicamente.
so solo che ne avranno uno.
sto cercando un sistema (elegante o no, basta che mi tolga dalle beghe) 
per nascondere/mostrare SOLO ALCUNE select del documento html e, di 
queste, mostrarne solo una nascondendo le altre.
avevo pensato di dare un ID al tag <td> che le raccoglie (cosi' facendo 
avrei voluto restringere il campo di azione soltanto alle select che mi 
interessano), ma non ho avuto gli esiti sperati :-/
come posso risolvere?
zz-



Eh, bisogna capire il contesto, detta così è difficile capirlo...ma perché
non puoi dare un ID a tutte le select? comunque sia un name lo avranno, no?
Quindi puoi riferirti a loro con document.getElementsByTagName('nome')[0].
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 Quindi puoi riferirti a loro con document.getElementsByTagName('nome')[0].
Mi attacco qui solo per segnalare quella che credo essere una distrazione
(se lo è, potrebbe fuorviare l'op): document.getElementsByName("nome")
oppure document.getElementsByTagName("select"). Sbàgliomi?
-- 
Nando [?]
Apostolo della Prova

 queste, mostrarne solo una nascondendo le altre.
Beh...intanto, come dice Cristiano, e' preoccupante che non abbiano un ID.
Detto questo, la soluzione al tuo caso potrebbe essere quella di racchiudere 
le select dentro a dei div.
Cerca su deja un thread dal titolo "DIV che si autospostano", per vedere 
come fare a nasconderli/visualizzarli correttamente.

 oppure document.getElementsByTagName("select"). Sbàgliomi?
sbàgliomi io, quando li digito li scambio sempre, quel "Tag" si infila
sempre dove non dovrebbe ... :-(
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 sempre dove non dovrebbe ... :-(
Consolati, non sei l'unico: delle volte è capitato anche a me :) (solitamente
me ne accorgo appena finisco di scrivere il metodo, e correggo)
-- 
Chuck Norris può ricostruire un uovo sbattuto.

 queste, mostrarne solo una nascondendo le altre.
Quindi, nell'insieme delle select della pagina si individua un sottoinsieme
al quale si vuole dare un comportamento diverso, ovvero si vuole che, in
ogni momento, solo una select del sottoinsieme sia visibile e le altre
nascoste. E' così?
In questo caso, la cosa da chiarire prima di ogni altra, imo, è il criterio
che permette di individuare il sottoinsieme di cui sopra: le select del
sottoinsieme sono tutte inserite in una medesima cella di tabella? Al
sottoinsieme devono appartenere tutte e solo le select che hanno un id?
Chiarito questo, si va avanti.


 Quindi puoi riferirti a loro con document.getElementsByTagName('nome')[0].
dunque, mi spiego meglio:
c'e' una form di ricerca che contiene una serie di select come parametri.
la prima select permette di scegliere tra due macro-categorie.
la seconda select permette di scegliere una sotto-categoria della 
macro-categoria di prima.
entrambe le select vengono generate dinamicamente da php e l'id viene 
assegnato anch'esso dinamicamente.
quando dalla prima select scelgo una categoria, devo mostrare la select 
"figlio" delle sotto-cagetorie e nascondere NON TUTTE LE SELECT, ma solo 
le select "figlio" che non riguardano quella categoria.
non so se mi sono spiegato bene, ma ho risolto cosi' (non so se sia 
molto elegante o adeguato ma pare funzionare).
nel tag head ho messo:
function sottoCat(select_id) {
   with(document.forms[0]) {
     for (i = 1; i < elements.length; i++) {
       if ( elements[i].id != select_id && elements[i].id.length > 0 ) {
         document.getElementById(elements[i].id).style.display = "none";
         document.getElementById(elements[i].id).name = null;
       } else {
         document.getElementById(select_id).style.display = "inline";
         document.getElementById(select_id).name = "sottocategoria";
       }
     }
   }
}
nell'html:
<!-- macro-categorie -->
<select name="categoria" onchange="sottoCat(this.value);">
   <option value="Categoria1">Categoria1</option>
   <option value="Categoria2">Categoria2</option>
   <option value="Categoria..">Categoria..</option>
</select>
<!-- inizio sotto-categorie -->
<select name="" id="Categoria1">
   <option value="">nessuna preferenza</option>
   <option value="sotto-cat1">sotto-cat1</option>
   <option value="sotto-cat2">sotto-cat2</option>
   <option value="sotto-cat..">sotto-cat..</option>
</select>
<select name="" id="Categoria2">
   <option value="">nessuna preferenza</option>
   <option value="sotto-cat1">sotto-cat1</option>
   <option value="sotto-cat2">sotto-cat2</option>
   <option value="sotto-cat..">sotto-cat..</option>
</select>
<!-- fine sotto-categorie -->
<script type="text/javascript">
   // carico una categoria di default (la prima dalla tabella-db)
   sottoCat("Categoria1");
</script>
in sostanza mi fa comodo che solo alcune select abbiano l'id e le altre 
(che non sono coinvolte in questo javascript) rimangano la' dove sono, 
perche' cosi' riesco, con le mie esigue risorse nel campo del js :-), a 
rintracciare le select che mi interessano, nasconderle/mostrarle, 
cambiare il nome (cosi' che la form invii i dati dalla sotto-select 
giusta) e bon.
magari non e' elegantissima, magari non e' il massimo ma funziona e mi 
pare sia anche cross-browser (o almeno FF e IE rispondono correttamente).
zz-

 Al sottoinsieme devono appartenere tutte e solo le select che hanno un id?
non necessariamente.
leggi il messaggio di come ho fatto: ho usato l'id come "scusa" per 
trovare le select che mi interessavano, scartando tutte quelle select 
che NON hanno id.
non so se sia il sistema migliore ma va.
zz-