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

    mantenere valore variabile all'esterno della funzione

    salve a tutti

    ho questa funzione qua

    codice:
        $(document).ready(function() {
            $("#accordion > li").click(function(){
                id=(this.id);                                             // VALORE ID
                if(false == $("ul",this).is(':visible')) {
                    $('#accordion ul').slideUp(300);
                }
                $("ul",this).slideToggle(300);
                test(id);
            });
            
            var ok;      
            function test(id) {
               ok= id;                                                    // VALORE ID IN VARIABILE OK
                alert (ok);
    
    
            }
                                                                      // ALERT DI OK QUI PERDE IL VALORE
            $('#accordion ul:eq('+ok+')').show();
        });
    all'interno della funzione test riesco a stampare il valore ID presente nella prima funzione.
    purtroppo però non riesco a riportarlo all'esterno poiché il valore mi servirebbe qui

    codice:
            $('#accordion ul:eq('+ok+')').show();
    cosa sbaglio?

  2. #2
    versione più pulita del codice

    codice:
        $("#accordion > li").click(function(){
            id=(this.id);
            if(false == $("ul",this).is(':visible')) {
                $('#accordion ul').slideUp(300);
            }
            $("ul",this).slideToggle(300);
        });
    
    
        
        $('#accordion ul:eq('+id+')').show(); // IL VALORE ID E' ANDATO PERSO ???

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Cosi ?

    codice:
        var id = 0;
        $("#accordion > li").click(function(){
            id=(this.id);
            if(false == $("ul",this).is(':visible')) {
                $('#accordion ul').slideUp(300);
            }
            $("ul",this).slideToggle(300);
        });
    
    
        
        $('#accordion ul:eq('+id+')').show(); // IL VALORE ID E' ANDATO PERSO ???
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    si già provato ma se stampo un alert all'interno della prima funzione mi da il valore corretto, lo stampo dopo e niente mi da valore 0.
    Può essere che non funzioni poiché la funzione è in un evento on click e quindi per qualche motivo uscendo perde il valore?

    Purtroppo la seconda funzione deve essere separata dalla prima altrimenti non fa il suo dovere, quindi non posso toccare il codice.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E se usassi un tag html nascosto per salvare il valore dell'id ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    tipo?

    il codice è il seguente:

    codice:
           <div>
                <ul id="accordion">
                    <li id="0"><?php echo $lang['ADMIN_MENU_DASHBOARD_00'] ?>
                        <ul>
                            <li><a href="dashboard"><?php echo $lang['ADMIN_MENU_DASHBOARD_01'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_DASHBOARD_02'] ?></a></li>
                        </ul>
                    </li>
                    <li id="1"><?php echo $lang['ADMIN_MENU_CATALOG_00'] ?>
                        <ul>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CATALOG_01'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CATALOG_02'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CATALOG_03'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CATALOG_04'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CATALOG_05'] ?></a></li>
                        </ul>
                    </li>
                    <li id="2"><?php echo $lang['ADMIN_MENU_CUSTOMER_00'] ?>
                        <ul>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CUSTOMER_01'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CUSTOMER_02'] ?></a></li>
                            <li><a href="#"><?php echo $lang['ADMIN_MENU_CUSTOMER_03'] ?></a></li>
                        </ul>
                    </li>
    
    ecc ecc ecc

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    - L'intento quale sarebbe?
    - Perché non lo esegui in linea direttamente sull'elemento?
    - Puoi mettere la pagina demo online?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao Carmelo, il codice di badaze e' migliore ma var id=0 la devi mettere fuori dallo scope di jQuery
    Va messa fuori da $(document).ready(.....) o $(function().... ( non so cosa usi ) altrimenti sarà presente solo al suo interno.
    Se cerchi id fuori da $(....) ti darà che non esiste.
    Quindi dovrà essere così:
    codice:
       var id = 0;
      $(function() {
    //tuo codice....dove assegnerai ID
    }
    
    //ovunque nello script avari id.
    Stessa cosa per le funzioni, se le dichiari in $() non saranno visibili all'esterno

  9. #9
    qui c'è il codice completo

    codice HTML:
    <html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <style>
    #accordion {
        list-style:none;
        width:300px;
        margin-top:80px;
        background-color: #EDEDED;
     }
    #accordion li {
     font-size:18px;
     cursor:pointer;
        color:#333;
        border-bottom:1px solid #999;
        padding: 9px 0px 9px 22px;
     }
    #accordion ul {
     list-style:none;
     display:none;
     margin:0;
     padding:5px 0;
     font-size:18px;
     }
    #accordion ul li {
     border:0;
     padding-left:15px;
     font-size:14px;
        padding: 4px 0px 4px 14px !important;
     }
    #accordion ul li a {
     text-decoration:none;
     color:#333;
     }
    #accordion ul li a:hover {
        color:#1e90ff;
        text-decoration:underline;
     }
        </style>
    </head>
    <body>
            <div>
                <ul id="accordion">
                    <li id="0">cat 1
                        <ul>
                            <li><a href="dashboard">menu 1</a></li>
                            <li><a href="#">menu 2</a></li>
                        </ul>
                    </li>
                    <li id="1">cat 2
                        <ul>
                            <li><a href="#">menu 1</a></li>
                            <li><a href="#">menu 2</a></li>
                            <li><a href="#">menu 3</a></li>
                            <li><a href="#">menu 4</a></li>
                            <li><a href="#">menu 5</a></li>
                        </ul>
                    </li>
                    <li id="2">cat 3
                        <ul>
                            <li><a href="#">menu 1</a></li>
                            <li><a href="#">menu 2</a></li>
                            <li><a href="#">menu 3</a></li>
                        </ul>
                    </li>
                    <li id="3">cat 4
                        <ul>
                            <li><a href="#">menu 1</a></li>
                            <li><a href="#">menu 2</a></li>
                            <li><a href="#">menu 3</a></li>
                        </ul>
                    </li>
                    <li id="4">cat 5
                        <ul>
                            <li><a href="#">menu 1</a></li>
                            <li><a href="#">menu 2</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
            <script type="text/javascript">
                var id = 0;
                $("#accordion > li").click(function(){
                    id=(this.id);
                    if(false == $("ul",this).is(':visible')) {
                        $('#accordion ul').slideUp(300);
                    }
                    $("ul",this).slideToggle(300);
                });
                $('#accordion ul:eq('+id+')').show();
            </script>
    </body>
    </html>
    la prima funzione fa funzionare il menu accordion

    la seconda

    $('#accordion ul:eq('+id+')').show();

    fa rimanere aperto il menu selezionato dopo aver cliccato una voce, ed è necessario passare l'id

    questo è il funzionamento

  10. #10
    guarda il codice sopra... var id=0 è all'inizio dello script

    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao Carmelo, il codice di badaze e' migliore ma var id=0 la devi mettere fuori dallo scope di jQuery
    Va messa fuori da $(document).ready(.....) o $(function().... ( non so cosa usi ) altrimenti sarà presente solo al suo interno.
    Se cerchi id fuori da $(....) ti darà che non esiste.
    Quindi dovrà essere così:
    codice:
       var id = 0;
      $(function() {
    //tuo codice....dove assegnerai ID
    }
    
    //ovunque nello script avari id.
    Stessa cosa per le funzioni, se le dichiari in $() non saranno visibili all'esterno

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.