Problemino da Newbie con DOM

  • Creatore Discussione Creatore Discussione Salvo B
  • Data di inizio Data di inizio

Salvo B

Nuovo Utente
21 Gen 2007
1
0
0
Salve a tutti, sono un web designer che si deve sacrificare a fare il lavoro del programmatore javascript..

Non essendo completamente il mio campo, devo necessariamente andare a sbattere la testa da qualche parte, dopo svariate letture sono riuscito a partorire una piccola soluzione ad un mio problema, ma necessita probabilmente di qualche accorgimento essendo che questa di fatto non funziona... ecco il problema:

Ho una pagina con una fotogallery realizzata con lightbox (aggiornata settimanalmente), tralasciando le immagini vere e proprie, il problema si focalizza sull'indice per accedere a tutte le gallerie, che è realizzato con una definition list per ogni mese di fotografie, il codice parla meglio della descrizione
HTML:
<div id="galleryindex">

<h3><a href="#">Mese 1</a></h3>
<div class="monthbox" id="mese0">
  <dl class="indexbox">
     <dt>Data della galleria 1</dt>
     <dd>Descrizione</dd>
     <dt>Data della galleria 2</dt>
     <dd>Descrizione</dd>
  </dl>
</div>

<h3><a href="#">Mese 2</a></h3>
<div class="monthbox" id="mese1">
  <dl class="indexbox">
     <dt>Data della galleria 3</dt>
     <dd>Descrizione</dd>
     <dt>Data della galleria 4</dt>
     <dd>Descrizione</dd>
  </dl>
</div>

</div>

Essendo già passati ben 4 mesi, la lista inizia a diventare lunga, per cui ho deciso di mostrare agli utenti con javascript attivato, solo l'indice del mese corrente, nascondendo gli altri e facendoli riapparire solo al click dell'utente sul nome del mese tramite scriptaculous (libreria già caricata nella pagina grazie a lightbox).

Per fare questo ho provato a realizzare una funzione JS:
Codice:
function HideBox() {
	data = new Date();
	m = "mese" + data.getMonth();
	if(document) {
		mb = document.getElementById('galleryindex').getElementsByTagName('div');
		for(i=0;i<mb.length;i++) {
			if((/monthbox/.test(mb[i].className)) && (mb[i].getAttribute("id") != m)) {
				mb[i].style.display="none";
			}
		}
		
	}
}

Sembra tutto in regola, tranne il fatto che non succede assolutamente nulla, i div rimangono li in bella evidenza.

Qualcuno sa aiutarmi ? Ho provato a cambiare in diversi modi le condizioni dell'if, escludendo ad esempio la seonda condizione o addirittura escludendo completamente l'if, non riesco a capire perchè non funzioni...

Vi prego illuminatemi!
 
Ultima modifica:

Discussioni simili