Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di goat
    Registrato dal
    Apr 2003
    Messaggi
    1,154

    ShowHide: singolo link mostra/nasconde più <div>.

    Ecco,
    ho trovato in una discussione vecchiotta questo codice per mostrare/nascondere più <div> tramite il click su un unico link:

    JS:
    Codice PHP:
    function getElementsByClassName(oElmstrTagNamestrClassName){
        var 
    arrElements = (strTagName == "*" && document.all)? document.all :
        
    oElm.getElementsByTagName(strTagName);
        var 
    arrReturnElements = new Array();
        
    strClassName strClassName.replace(/\-/g"\\-");
        var 
    oRegExp = new RegExp("(^|\\s)" strClassName "(\\s|$)");
        var 
    oElement;
        for(var 
    i=0i<arrElements.lengthi++){
        
    oElement arrElements[i];
        if(
    oRegExp.test(oElement.className)){
        
    arrReturnElements.push(oElement);
            }
        }
        return (
    arrReturnElements)
    }
    function 
    mostra_nascondi() {
    var 
    getElementsByClassName(document"div""small");
    for (
    i=0i<d.lengthi++) { if (d[i].style.display=='none') { d[i].style.display='block'; } else { d[i].style.display='none'; } }

    E questo l'HTML:

    Codice PHP:
    <div id="w1" class="small" style="display: block">contenuto1</div>
    <
    div id="b1" class="small" style="display: block">contenuto2</div>
    <
    div id="s3" class="small" style="display: block">contenuto3</div>
    [
    url="#null"]Show/Hide[/url
    Funziona perfettamente. Però vorrei modificarlo per riuscire a gestire la cosa da DUE link: cliccando sul primo si dovrebbero mostrare tutti i <div>, mentre con il secondo si dovrebbero nascondere.

    Bisogna modificarlo pesantemente?

    Grazie,
    goat
    "Qualunque impressione faccia su di noi, egli è un servo della legge, quindi appartiene alla legge e sfugge al giudizio umano."

  2. #2
    Utente di HTML.it L'avatar di goat
    Registrato dal
    Apr 2003
    Messaggi
    1,154
    Mi sono arrangiato... incredibilmente.
    Ho aggiunto un'altra funzione:

    Codice PHP:
    function nascondi() {
    var 
    getElementsByClassName(document"div""small");
    for (
    i=0i<d.lengthi++) { if (d[i].style.display=='block') { d[i].style.display='none'; } }
    }

    function 
    mostra() {
    var 
    getElementsByClassName(document"div""small");
    for (
    i=0i<d.lengthi++) { if (d[i].style.display=='none') { d[i].style.display='block'; } }

    Ed ho associato la prima al link1 e la seconda al link2.
    Come la trovate come soluzione?
    L'unica possibile, o ci sono strade più semplici?
    "Qualunque impressione faccia su di noi, egli è un servo della legge, quindi appartiene alla legge e sfugge al giudizio umano."

  3. #3
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Buono per non aggiungere funzioni e per non copiare codice gia esistente potresti aggiungere un parametro alla funzione volendo

    Codice PHP:
    function mostra_nascondi(evento) {
    var 
    getElementsByClassName(document"div""small");


    for (
    i=0i<d.lengthi++) {

     if (
    evento=='nascondi') {
         
    d[i].style.display='none'
     }else {
         
         
    d[i].style.display='block'
     } 

    }



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.