Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    rendere "checked" una checkbox

    Ho uno script, messo insieme da più fonti perché io da solo so far pochino , che rende visibili o invisibili alcune parti di una pagina, sia cliccando su dei link sia selezionando o deselezionando dei checkbox.

    In particolare mi serve avere una serie di checkbox che, quando selezionati, visualizzano diverse sezioni, e quando deselezionate le nascondono.
    In aggiunta a questi mi serve due link testuali, uno che visualizza l'altro che nasconde tutto insieme.
    Il problema nasce quando dopo aver visualizzato una parte selezionando una checkbox, e averla nascosta con il link testuale, la checkbox risulterà ancora selezionata sebbene la sua sezione sia nascosta.

    Mi serve quindi aggiungere alle funzioni "nascondi/visualizza tutto" un comando che controlla anche le checkbox.

    ecco il codice che ho già messo insieme:




    codice:
    <html>
    <head>
    
    <style>
    .toggle { display: none; }
    </style>
    
    <script language="JavaScript">
    
    function toggleAll(itemname,state)
     {
       tmp = document.getElementsByTagName('div');
        for (i=0;i<tmp.length;i++)
        {
            if (tmp[i].className == itemname) tmp[i].style.display = state;
        }
     }
    
    function toggle(idname)
     {
       document.getElementById(idname).style.display =
        (document.getElementById(idname).style.display == 'none') ? 'block' : 'none';
     }
    
    </script>
    
    </head>
    <body>
    
    <div id="blocka" class="toggle"> Sezione A </div>
    <div id="blockb" class="toggle"> Sezione B </div>
    <div id="blockc" class="toggle"> Sezione C </div>
    
    Show All
    
    Hide All
    
    
    
    
    Toggle A  
        <input id="ckbx" type="checkbox"
     onclick="document.getElementById('blocka').style.display = (this.checked)?'block':'none';">
     visualizza A
    
      
    Toggle B
        <input id="ckbx" type="checkbox"
     onclick="document.getElementById('blockb').style.display = (this.checked)?'block':'none';">
     visualizza B
    
    	
    Toggle C
        <input id="ckbx" type="checkbox"
     onclick="document.getElementById('blockc').style.display = (this.checked)?'block':'none';">
     visualizza C
    
    
    
    </body></html>

    dovrei inserire qualcosa tipo (perdonate le eresie che scriverò):
    ('state' == 'none') ? document.getElementById(ckbx).style = 'checked' : 'unchecked'
    all'interno della funzione "toggleAll"
    è possibile?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    285
    document.all.nomeChk.checked = true; 'checkata
    document.all.nomeChk.checked = false; 'dechekata
    ciao

  3. #3
    Originariamente inviato da sb82
    document.all.nomeChk.checked = true; 'checkata
    document.all.nomeChk.checked = false; 'dechekata
    ciao
    ciao
    ho provato a inserire il tuo codice così:
    codice:
    Show All
    ma non sembra avere effetto.

  4. #4
    Originariamente inviato da Spider Baby
    ciao
    ho provato a inserire il tuo codice così:
    codice:
    Show All
    ma non sembra avere effetto.
    mettilo prima del primo javascript

  5. #5
    Originariamente inviato da marcello3000
    mettilo prima del primo javascript
    intendi così:
    codice:
    <a href="javascript:document.all.ckbx.checked = true,
    toggleAll('toggle','block')">Show All</a>
    o semplicemente così?

    codice:
    Show All
    non credo di aver capito: in entrambi i modi non mi funziona

  6. #6
    già che ci sono aggiungo una ulteriore, ma minore, richiesta, anche se un poco OT: c'è qualche modo (CSS magari) per cambiare l'aspetto di un checkbox? tipo colore del quadratino e della x, o altro.
    magari qualcosa di questo genere? (sono checkbox di applicazioni)


  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    285
    prova come nel primo caso (anche se ti consiglio di inserire tutto dentro alla funzione controllando se è checckato o no), però dopo il tru ci va il ; non la virgola
    ciao

  8. #8
    Avevo provato con la virgola andando a tentativi, cmq anche con il ; funziona unicamente se c'è un solo checkbox con quell'ID, e solo su quello.

    In uno slancio dettato più dalla disperazione che dall'entusiasmo ho provato a modificare la funzione ToggleAll, maldestramente (Error: not implemented); ho aggiunto due variabili e un for:

    codice:
    function toggleAll(itemname,state,itemname2,spunta)
     {
       tmp = document.getElementsByTagName('div');
        for (i=0;i<tmp.length;i++)
        {
            if (tmp[i].className == itemname) tmp[i].style.display = state;
        };
    	
    	   top = document.getElementsByTagName('input');
        for (g=0;g<tmp.length;g++)
        {
            if (top[g].className == itemname2) top[g].checked = spunta;
        }
    	
     }
    Questo il codice all'interno della pagina:

    codice:
    <div id="blocka" class="toggle"> Sezione A </div>
    
    
    <a href="javascript:toggleAll('toggle','block','ckbx','checked')">
    Show All</a>
    
    Toggle A
    <input class="ckbx" type="checkbox" id="checkbon"
     onclick="document.getElementById('blocka').style.display =
     (this.checked)?'block':'none';">
     visualizza A
    (gli strani a-capi che vedi non sono presenti nel codice originale)
    Puoi darmi qualche altro indizio?

  9. #9
    scusatemi se uppo
    ma sento che ci sono vicino, ci dev'essere solo qualche intoppo sintattico, e oggi in ogni caso dovrò utilizzare lo script, con o senza funzione "check all".
    sarebbe un peccato.
    grazie in ogni caso a tutti quelli che hanno dato una mano

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non ho seguito tutta la discussione.
    Ti segnalo un paio di cose:

    1. il nome top fa parte del default del DOM (indica la finestra), e non puo` essere usato come nome di variabile

    2. per settare un checkbox che non sai se e` gia` settato, puoi usare:
    var cb = document.NOMEFORM.NOMNECHECKBOX; // o altro modo per definirne l'oggetto
    if(!cb.checked)cb.click();
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.