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

    mostra/nascondi <div>...

    Ciao a tutti.
    Vado subito al dunque:
    Un ciclo ASP mi permette di stampare delle righe di una tabella di database. I dati vengono stampati NON usando una tabella html ma dei <div>.
    I dati vanno raggruppati per TIPO. Vorrei realizzare una funzione Javascript che permetta di comprimere/espandere i tipi per vedere gli elementi che li compongono.

    esempio:

    TIPO1
    ELEMENTO 1
    ELEMENTO 2
    ELEMENTO 3
    TIPO2
    ELEMENTO 1
    ELEMENTO 2
    TIPO3
    ELEMENTO 1
    Vorrei che cliccando su TIPO1, ad esempio, si nascondessero/riapparissero gli elementi che lo compongono.
    In realtà ho realizzato una funzione che funziona ma che ha un problema. Quando genero i div che stampano gli elementi, ad ognuno assegno un ID uguale al nome del tipo di appartenenza.Così facendo però ho che più DIV hanno lo stesso ID e quindi la funzione agisce solo sul primo della lista. Il mio problema è allora trovare un modo per identificare tutti i div dello stesso tipo... escludendo di racchiuderli con un altro div perché, per come è strutturato il codice, verrebbe troppo complicato.
    Grazie a chi vorrà perdere un po' del proprio tempo per rispondermi.
    Ciao

    P.S.
    La funzione Javascript che uso è semplice e efficace, a meno di auanto detto:

    function mostra-nascondi(elemento) {
    var f=document.getElementById(elemento);
    f.style.display=f.style.display=='block'?'none':'b lock';
    }

    Ho provato ad assegnare un nome di classe comune ai div (al posto dell'id) ma poi non so quale funzione usare al posto di getElementById per recuperarlo

  2. #2
    Al posto della classe puoi usare direttamente
    getElementsByTagName("div")

    Se per esempio vuoi interfacciarti a tutti i div contenuti nel div "tipo1":
    codice:
    f=new Array();
    f=document.getElementById("Tipo1").getElementsByTagName("div");
    for(i=0; i!=f.lenght; i++)
    {
     f[i].style.display=f[i].style.display=='block'?'none':'block';
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    107
    OTTIMO!!!
    Fino all'uso di getElementsByTagName c'ero arrivato pure io.... ma non sapevo di poter far riferimento solo ai div all'interno di un altro ... e quindi facendo riferimento a tutti quelli della pagina dovevo introdurre delle condizioni aggiuntive inutili...
    Grazie!!!
    A presto e buona giornata

  4. #4
    Originariamente inviato da Mega69
    Al posto della classe puoi usare direttamente
    getElementsByTagName("div")

    Se per esempio vuoi interfacciarti a tutti i div contenuti nel div "tipo1":
    codice:
    f=new Array();
    f=document.getElementById("Tipo1").getElementsByTagName("div");
    for(i=0; i!=f.lenght; i++)
    {
     f[i].style.display=f[i].style.display=='block'?'none':'block';
    }
    interessante ... ma se la struttura fosse un "pelo" più complessa del tipo

    Tipo1
    Elemento1
    Elemento 2
    SubElemento2
    Elemento3

    nel tuo caso lo script aprirebbe tutti i div anche SubElemento2? esiste un modo per escluderlo? Cioè esiste un modo per aprire solo il primo livello?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    107
    In realtà non c'è problema.
    Basta che nella funzione javascript che mostra/nasconde i div aggiungi un controllo che permetta di identificare i div sui quali vuoi intervenire. Se ad esempio i div del sottoelemento li metti in una classe il cui nome è l'elemento di appartenenza preceduto da un prefisso (es. SUB_ELEM), allora dentro la funzione dirai di chiudere tutti i div la cui classe è SUB_ELEM + nome elemento.
    Chiaro?
    Spero di si....
    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.