Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    chiudere div con onclick

    salve, io ho una serie di layer che devo chiudere con il comando;
    document.getElementById('nome').style.display='non e';

    se io ho dei layer chiamati :ciccio1, ciccio2,ciccio3 etc, esiste un modo per dire:chiudi tutti quelli che iniziano per "ciccio"?
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  2. #2
    questa l'ho scritta al volo, ma dovrebbe funzionare sia con firefox che con internet explorer

    Codice PHP:
    function chiudiTuttiCiccio(){
      var 
    collezioneDiv=document.getElementsByTagName('div');
      for(var 
    i=0,unDiv;unDiv=collezioneDiv[i];i++){
        if(
    unDiv.id.match(/ciccio[\d]+/)) unDiv.style.display='none';
       }



  3. #3
    anzi,se vuoi fare una cosa più carina e riusabile:
    Codice PHP:
       function chiudi(cosa){
          if (
    cosa instanceof RegExp){
             var 
    collezioneDiv=document.getElementsByTagName('div');
             for(var 
    i=0,unDiv;unDiv=collezioneDiv[i];i++){
                if(
    unDiv.id.match(cosa)) unDiv.style.display='none';
             }
           return;
          }
          
    document.getElementById(cosa).style.display='none';
       } 
    e la usi chiamandola così:
    Codice PHP:
    <span onclick="chiudi('ciccio1')">chiudi solo ciccio1passando alla funzione l'id del tuo layer</span>

    <span onclick="chiudi(/ciccio[\\d]+/)"> chiudi tutti i div il cui id contiene ciccio con affianco un numero qualunque</span>

    <span onclick="chiudi(/ciccio(1|2|10)/)"> chiudi soltanto i div con id "ciccio1", "ciccio2" e "ciccio10"</span> 
    insomma, puoi farci quello che ti pare, è richiesta solo una conoscenza di base delle espressioni regolari(se noti, nella prima chiamata ho usato una stringa,nelle altre due uso una espressione regolare).

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    grazie..

    pero non mi funziona.non da errore ma non fa nulla!
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  5. #5
    strano, a me funziona sia con firefox che con IE che con opera....

    forse sbagli nel chiamare la funzione...
    prova ad usare questo file e dimmi se ti funziona
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        
    <
    html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
    <
    head>
     <
    title></title>
     <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
     <
    script type="text/javascript">
      function 
    chiudi(cosa){
          if (
    cosa instanceof RegExp){
             var 
    collezioneDiv=document.getElementsByTagName('div');
             for(var 
    i=0,unDiv;unDiv=collezioneDiv[i];i++){
                if(
    unDiv.id.match(cosa)) unDiv.style.display='none';
             }
             return;
          }
          
    document.getElementById(cosa).style.display='none';
       }
     
    </script>
    </head>
    <body>

    <div id="co">ciao</div>

    <div id="ciccio1">ciccio1</div>
    <div id="ciccio2">ciccio2</div>
    <div id="ciccio3">ciccio3</div>
    <div id="ciccio10">ciccio10</div>
    <div id="ciccio5">ciccio5</div>




    <!-- ops,queste due righe non le considerare, stavo facendo esperimenti..
    <span onclick="chiudi()">chiudi tutti</span>

    <span onclick="chiudi('ciccio1')">chiudi</span>
     -->
    <span onclick="chiudi('ciccio1')">chiudi solo ciccio1, passando alla funzione l'id del tuo layer-</span>


    <span onclick="chiudi(/ciccio[\\d]+/)"> chiudi tutti i div il cui id contiene ciccio con affianco un numero qualunque-</span>


    <span onclick="chiudi(/ciccio(1|2|10)/)"> chiudi soltanto i div con id "ciccio1", "ciccio2" e "ciccio10"-</span>

    </body>
    </html> 

  6. #6
    ho capito qual'è l'errore, in pratica è colpa del forum che toglie automaticamente i backslash dai post....ora ho corretto tutto,ti deve funzionare per forza

  7. #7

    Re: grazie..

    Originariamente inviato da tespiego
    pero non mi funziona.non da errore ma non fa nulla!
    il problema era nell'espressione regolare.
    in pratica /ciccio[\d]+/ è una espressione regolare che cerca se nel testo è presente la stringa "ciccio" concatenata con una stringa formata da una o più cifre.Ad esempio le seguenti stringhe verranno selezionate:
    ciccio1 ->ciccio1
    ciccio12313 -> ciccio12313
    asdfciccio3 ->ciccio3
    asdfciccio1234poiiu12 -> ciccio1234
    ciccio -> [niente]
    cicio1 -> [niente]
    asdficcio23 -> [niente]

    l'espressione regolare che hai copiato dall'ultimo post era sbagliata(ora l'ho corretta;il primo post però non sono riuscito a correggerlo,quindi non lo considerare) perchè era /ciccio[d]+/ , cioè mancava un controslash prima della d. Una RegExp di questo tipo è perfettamente legale, per questo non ti ha dato errore, però fa una cosa diversa da quella richiesta, cioè trova stringhe di questo tipo:
    cicciod -> cicciod
    asdfciccioddddasd -> cicciodddd
    ciccio -> [niente]
    ciccio12 -> [niente]

    spero di essere stato chiaro.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    si!!!

    grande. grazie mille,ora funziona!!
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

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.