Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    nascondere serie div creati dinamicamente

    Ciao a tutti,
    ho una pagina in cui creo dei DIV dinamicamente attraverso uno script ASP
    es.:
    <DIV ID="result_12"></div>
    <DIV ID="result_15"></div>
    <DIV ID="result_51"></div>
    <DIV ID="result_167"></div>

    ho la necessità di nasconderli tutti in un colpo solo all'interno di una funzione javascript.

    Se uso
    for(x=0;x<1000;x++) document.getElementById("result_" + x).innerHTML = "";

    ... non funziona in quanto non tutti gli elementi ricercati dal ciclo FOR esistono... e poi comunque sarebbe una soluzione inefficiente..
    Come posso risolvere questo problema?
    Grazie &

  2. #2
    A parte che potresti fare un if sull'esistenza o meno

    A parte che anziche' svuotarli potresti settare

    getElementById("result_" + x).style.display="none"

    (nel caso poi volessi farli riapparire...)

    Ma non puoi semplicemente metterli tutti dentro un DIV piu' grande e settare questo a display=none?

  3. #3
    Avevo pensato alla soluzione IF , ma
    1 -> dato che non sono molto pratico di javascrip non so come si fa
    2-> la ritengo comqunque una soluzione poco efficiente in quanto dovrei inserire (come ho fatto adesso) una valore massimo all'interno del ciclo FOR. Una soluzione di questo genere porta a due svantaggi: consumo inutile di risorse e (dato che il numero posto alla fine del nome del DIV è un contatore di una tabella di un DB) rischio di dover modificare il codice se il valore massimo diventa troppo alto

    Si, al momento settavo il contenuto == "" perchè stavo facendo delle prove (anche per altre funzionalità)... naturalmente utilizzerò
    getElementById("result_" + x).style.display="none"
    per eliminare il DIV dalla visualizzazione


    No, non posso mettere tutto in un DIV padre in quanto a seconda delle necessità potrei dover visualizzare il contenuto di uno ò più singoli DIV in maniera indipendente.

    Grazie &

  4. #4
    Utilizzando il seguente codice funziona:
    codice:
    for(x=0;x<9999;x++){
       if (document.getElementById("result_" + x))	document.getElementById("result_" + x).innerHTML = "";
    }
    però lo ritengo lento e inefficiente... c'è un metodo in javascript per considerare i vari elementi DIV come se fossero un array?
    Mi spiego meglio con un esempio:
    Se ho questi div:
    <DIV ID="result_12"></div>
    <DIV ID="result_15"></div>
    <DIV ID="result_51"></div>
    <DIV ID="result_167"></div>

    Posso accedere al primo con qualcosa del tipo "arrayDIV[0]" al secondo con "arrayDIV[2]", ... ecc...?

    Grazie &

  5. #5
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549
    non ho capito bene il tuo problema.
    comunque se tu durante la creazione dinamica dei div conosci in anticipo quali div vorrai nascondere e quali no o se hai bisogno di raggrupparli per poterli modificare tutti in una volta, potresti aggiungerci (oltre all'ID) il NAME uguale per tutti gli elementi che vuoi controllare simultaneamente. così con document.getElementsByName avrai l'array di tutti gli elementi targati con quel nome così sarà più semplice modificarli tutti:

    <div id="x" name="daNascondere"></div>
    <div id="y" name="daNascondere"></div>
    <div id="z" name="daNascondere"></div>

    var elementi=document.getElementsByName("daNascondere" );
    for (var i=0;i<elementi.length;i++)
    {
    elementi[i].style.display="none"
    }
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  6. #6
    Si, una soluzione del genre sarebbe l'ideale... però ho provato ma no va... probabilmente ho sbagliato qualcosa:

    Ho i tag html:

    <DIV ID="result_12" NAME="sottocategoria"></div>
    <DIV ID="result_15" NAME="sottocategoria"></div>
    <DIV ID="result_51" NAME="sottocategoria"></div>
    <DIV ID="result_167" NAME="sottocategoria"></div>

    e poi ho il codice javascript:



    codice:
    var elementi=document.getElementsByName("sottocategoria");
    for (var i=0;i<elementi.length;i++){
       elementi[i].style.display="none"
    }
    .. ma non va...

  7. #7
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549
    secondo me funziona
    Codice PHP:
    <script language="JavaScript" type="text/javascript">


    function 
    vai()
    {
        var 
    elementi=document.getElementsByName("sottocategoria");
        
        for (var 
    i=0;i<elementi.length;i++)
        {
           
    elementi[i].style.display="none"
        
    }
    }




    </script>
    <html>
    <body>
    <DIV ID="result_12" NAME="sottocategoria">rgsed</div>
    <DIV ID="result_15" NAME="sottocategoria">regfsedf</div>
    <DIV ID="result_51" NAME="sottocategoria">regfsedr</div>
    <DIV ID="result_167" NAME="sottocategoria">gedgrdgrdgs</div>

    [url="#"]fai sparire[/url]
    </body>
    </html> 
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  8. #8
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549
    dimenticavo. forse già lo sai.
    se vuoi utilizzare il DOM, quindi il getElement e il resto chiaramente la pagina html che contiente gli elementi su cui vuoi lavorare dovrà essere caricata prima di qualsiasi chiamata.

    quindi devi lanciare lo script che contiene le funzioni DOM dopo aver caricato la pagina html. quindi o fai un link come ho fatto io, oppure con un evento onload nel body

    <body onload="vai()">

    .....



    </body>
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  9. #9
    trovo la soluzione di utilizzare l'attributo name piuttosto elegante

    tuttavia se per qualche motivo tu non potessi utilizzarla nella pratica (ad esempio perche' usi name per altriscopi) beh allora ricorda che puoi sempre creare con al volo con asp una variabile js che contiene il numero di div.

    ad esempio dopo aver inserito 500 div puoi inserire qualcosa di questo tipo

    <script>
    var numero_di_div = 500
    </script>

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.