Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    Domanda su scriptaculous e BlindUp/BlindDown

    Salve...

    Ho una pagina con una fotogallery in lightbox (aggiornata settimanalmente), l'indice per accedere a tutte le gallerie realizzato con una dl nel seguente modo:

    codice:
    <dl class="indexbox">
       <dt>Data della galleria 1</dt>
       <dd>Descrizione</dd>
       <dt>Data della galleria 2</dt>
       <dd>Descrizione</dd>
    </dl>
    Visto che l'indice si sta facendo corposo, avevo pensato di suddividerlo in gruppi mensili racchiusi in un div che tramite javascript si chiude su se stesso e si estende al click dell'utente...

    quindi trasformando il markup così:

    codice:
    <h3>Mese 1</h3>
    <div class="monthbox" id="mese1">
      <dl class="indexbox">
         <dt>Data della galleria 1</dt>
         <dd>Descrizione</dd>
         <dt>Data della galleria 2</dt>
         <dd>Descrizione</dd>
      </dl>
    </div>
    <h3>Mese 2</h3>
    <div class="monthbox" id="mese2">
      <dl class="indexbox">
         <dt>Data della galleria 3</dt>
         <dd>Descrizione</dd>
         <dt>Data della galleria 4</dt>
         <dd>Descrizione</dd>
      </dl>
    </div>
    Innanzitutto premetto che la scelta di usare scriptaculous è d'obbligo visto che la libreria è già caricata nella pagina e non voglio caricarne altre....
    Il mio dubbio essendo un totale ignorante di javascript e non riuscendomi a racapezzare nella terribile documentazione di scriptaculous è il seguente:

    Come faccio a rendere tutti i div della classe "monthbox" in modo che risultino "chiusi" in se stessi per poterli poi estendere tramite l'onclick ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    UP! Nessun temerario mi offre una risposta ???

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    Ok ho trovato una soluzione... ho letto un po e ho capito che potevo risalire agli elementi scalando un po il DOM...

    Innanzitutto ho riscritto il codice così

    codice:
    <div id="galleryindex">
    
    <h3>Mese 1</h3>
    <div class="monthbox" id="mese01">
      <dl class="indexbox">
         <dt>Data della galleria 1</dt>
         <dd>Descrizione</dd>
         <dt>Data della galleria 2</dt>
         <dd>Descrizione</dd>
      </dl>
    </div>
    
    <h3>Mese 2</h3>
    <div class="monthbox" id="mese02">
      <dl class="indexbox">
         <dt>Data della galleria 3</dt>
         <dd>Descrizione</dd>
         <dt>Data della galleria 4</dt>
         <dd>Descrizione</dd>
      </dl>
    </div>
    
    </div>
    Ora sto provando a realizzare una funzione che trovi tutti gli elementi con tag "div" contenuti nel div con id "gallerybox", verifichi se a questi elementi sia assegnata la classe "monthbox" e se l'id di ognuno di questi div sia diverso da "meseXX" (dove XX è il numero del mese corrente) e assegna a loro l'attributo css display="none".

    Ovvero nasconde tutti i div che contengono gli indici delle gallerie degli altri mesi mantenendo visibile solo quello relativo al mese corrente.

    codice:
    function HideBox() {
    	data = new Date();
    	m = "mese" + data.getMonth();
    	if(document) {
    		mb = document.getElementById('gallerybox').getElementsByTagName('div');
    		for(i=0;i<mb.lenght;i++) {
    			if((/monthbox/.test(mb[i].className)) && (mb[i].getAttribute("id") != m)) {
    				mb[i].style.display="none";
    			}
    		}
    		
    	}
    }
    Ho inserito la funzione HideBox(); dentro un tag script poco prima del markup relativo agli elementi che voglio manipolare, eppure lo script...

    ... non funziona....

    Poi ho anche provato a mettere HideBox(); nell'evento onload di body.. non funziona ugualmente....

    Ho scritto questo scriptino in un file esterno chiamato funzioni.js e che ho regolarmente richiamato nell'head del documento...

    Sapete dirmi dove sta l'errore ??

    p.s. ho anche provato ad eliminare la condizione dell'if che verifica se l'id dell'elemento è relativo al mese corrente, così dovrebbe nasconderli tutti, ma non funziona ugualmente...

    C'è forse un errore nelle condizioni dell'if ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    Ragazzi... ve lo chiedo per pietà... è il quarto post che scrivo da solo nel mio topic...

    Qualcuno vuole considerarmi ?? anche solo per un insulto!!

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ci sei andato molto vicino, sviste ed errori che rilevo ad occhio:
    - parli di galleryindex ma poi cerchi gallerybox
    - errore determinante: lenght invece di length
    - l' array dei mesi, in quanto array parte da 0 e non da 1
    - per febbraio non troverebbe "mese01" ma "mese1"

    riguardo l' onload o la posizione dello script,
    Ho inserito la funzione HideBox(); dentro un tag script poco prima del markup relativo agli elementi che voglio manipolare
    semmai andrebbe subito dopo

    se invece vuoi gestirlo con l' onload devi modificare questo onload di default per litebox
    <body onload="initLightbox()">
    in
    <body onload="HideBox();initLightbox();">

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.