Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22

    Mostra e nascondi <div>

    Salve a tutti ho un problema che non riesco a spiegarmi.

    Io ho questo codice: dove la funzione in javascript MostraNasconda mi permette di visualizzare e nascondere il testo alla premuta del bottone

    codice:
    <script type="text/javascript">
         var mostra=true;
         function MostraNascondi() {
             if (mostra)
                  document.getElementById("lezioni").style.display="block";
             else
                  document.getElementById("lezioni").style.display="none";
             mostra=!mostra;
         }
    </script>

    Codice PHP:
    <?php
    // Elenco degli esami
    $query "SELECT id, fullname FROM course";
    $result mysql_query($query$con);
    echo 
    "Esami";
    while(
    $row=mysql_fetch_array($result))
    {
          echo 
    "<p>".$row['id']." ".$row['fullname'];
    ?>        

          <button type="submit" name="mostra" value="mostra" onclick="MostraNascondi();">Visualizza lezioni</button>

          <div id="lezioni" style="display:none;">
          <?php
                
    // Elenco delle lezioni per l'esame scelto
                
    $query1 "SELECT name FROM lesson WHERE course=$row['id'];";
                
    $result1 mysql_query($query1$con);
                echo 
    "Lezioni";
                while(
    $row1=mysql_fetch_array($result1))
                {
                      echo 
    $row1[0]."<br>";
                 }
           
    ?>
           </div>
    <?php
    }        // chiusura while degli esami
    ?>

    Alla fine ottengo una roba di questo genere:
    esame1 visualizza lezioni
    esame2 visualizza lezioni
    esame3 visualizza lezioni

    Il mio obiettivo è che per ogni esame, alla premuta del bottone corrispondente, venga visualizzato l'elenco delle lezioni di quel determinato esame.

    La funzione javascript funziona ma il problema è che mi visualizza sempre le lezioni del primo esame seppur digito il bottone di un altro esame...

  2. #2
    Ciao Ferr,
    Gli id all'interno del documento dovrebbero sempre essere univoci
    codice:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(function(){
         $('.switch').click(function(){
              $(this).next().slideToggle();
         });
    });
    </script>

    Codice PHP:
    <?php
    // Elenco degli esami
    $query "SELECT id, fullname FROM course";
    $result mysql_query($query$con);
    echo 
    "Esami";
    while(
    $row=mysql_fetch_array($result))
    {
          echo 
    "<p>".$row['id']." ".$row['fullname'];
    ?>        

          <button class="switch">Visualizza lezioni</button>

          <div class="lezioni" style="display:none;">
          <?php
                
    // Elenco delle lezioni per l'esame scelto
                
    $query1 "SELECT name FROM lesson WHERE course=$row['id'];";
                
    $result1 mysql_query($query1$con);
                echo 
    "Lezioni";
                while(
    $row1=mysql_fetch_array($result1))
                {
                      echo 
    $row1[0]."<br>";
                 }
           
    ?>
           </div>
    <?php
    }        // chiusura while degli esami
    ?>
    Luca

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    <script type="text/javascript">
         function MostraNascondi(id) {
    var sezLezioni = document.getElementsByClassName("lezioni")
            for (var i=0; i<sezLezioni.length; i++;){
                  if(sezLezioni[i].id == "lezioni_"+id){
    sezLezioni[i].style.display="block";
             else
                  sezLezioni[i].style.display="none";
             }
    }
         }
    </script>

    Codice PHP:
    <?php
    // Elenco degli esami
    $query "SELECT id, fullname FROM course";
    $result mysql_query($query$con);
    echo 
    "Esami";
    while(
    $row=mysql_fetch_array($result))
    {
          echo 
    "<p>".$row['id']." ".$row['fullname'];
    ?>        

          <button type="button" name="mostra" value="mostra" onclick="MostraNascondi(<?php echo $row['id']; ?>);">Visualizza lezioni</button>

          <div id="lezioni_<?php echo $row['id']; ?>" class="lezioni" style="display:none;">
          <?php
                
    // Elenco delle lezioni per l'esame scelto
                
    $query1 "SELECT name FROM lesson WHERE course=$row['id'];";
                
    $result1 mysql_query($query1$con);
                echo 
    "Lezioni";
                while(
    $row1=mysql_fetch_array($result1))
                {
                      echo 
    $row1[0]."<br>";
                 }
           
    ?>
           </div>
    <?php
    }        // chiusura while degli esami
    ?>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22
    Ringrazio tanto tutte e due, però non mi funziona nessuna delle due opzioni

    lucavizzi: possibile che mi dia un problema con ajax? E' sufficente ciò <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> per funzionare? Scusate la mia ignoranza ma non conosco ne ajax ne javascript

    cavicchiandrea: mi piace molto la tua soluzione ma non capisco perchè non vada eppur mi sembra che la punteggiatura sia corretta...

  5. #5
    Quella è la libreria jQuery, andrebbe inclusa solo una volta nel documento, e dovrebbe essere sufficiente a far girare il mio script.
    Hai messo la classe "switch" ai pulsanti e la classe "lezioni" in sostituzione all'omonimo id?
    È importante anche che i div.lezioni siano subito dopo i pulsanti.switch senza nessun altro tag HTML in mezzo.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da ferr Visualizza il messaggio
    cavicchiandrea: mi piace molto la tua soluzione ma non capisco perchè non vada eppur mi sembra che la punteggiatura sia corretta...
    Da errori nella console o nella pagina?
    L'hai ricopiato esattamente sia lo script che html?
    Se non risolvi ricontrollando, metti il link alla pagina pubblica
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Quella è la libreria jQuery, andrebbe inclusa solo una volta nel documento, e dovrebbe essere sufficiente a far girare il mio script.
    Hai messo la classe "switch" ai pulsanti e la classe "lezioni" in sostituzione all'omonimo id?
    È importante anche che i div.lezioni siano subito dopo i pulsanti.switch senza nessun altro tag HTML in mezzo.

    codice:
    <head>
         <meta charset="utf-8"/>    <!-- codifica dei caratteri -->
         <title>esami</title>
         <link href="style.css" rel="stylesheet" type="text/css"/>
        
          <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
         
          <script type="text/javascript">
                $(function(){
                     $('.switch').click(function(){
                        $(this).next().slideToggle();
                    });
                });
           </script>
    </head>



    Codice PHP:
    <?php
    // Elenco degli esami
    $query "SELECT id, fullname FROM course;";
    $result mysql_query($query$con);
    echo 
    "Esami";
    while(
    $row=mysql_fetch_array($result))
    {
            echo 
    $row['id']." ".$row['fullname'];
    ?>        

    <button class="switch">Visualizza lezioni</button>

    <div class="lezioni" style="display:none;">
    <?php
              
    // Elenco delle lezioni dell'esame scelto
              
    $query1 "SELECT name FROM url WHERE course=$row['id'];";
              
    $result1 mysql_query($query1$con);
              echo 
    "Lezioni";
              while(
    $row1=mysql_fetch_array($result1))
              {
                    echo 
    $row1[0];
              }
    ?>
    </div>
                           
    <?php
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Da errori nella console o nella pagina?
    L'hai ricopiato esattamente sia lo script che html?
    Se non risolvi ricontrollando, metti il link alla pagina pubblica

    Ne in una ne nell'altra mi da errore...semplicemente quando spingo sul bottone 'visualizza lezioni' non accade niente


    codice:
        <head>
            <meta charset="utf-8"/>
            <title>esami</title>
            <link href="style.css" rel="stylesheet" type="text/css"/>
            
            <script type="text/javascript">             
                  function MostraNascondi(id) {
                        var sezLezioni = document.getElementsByClassName("lezioni")
                         for (var i=0; i<sezLezioni.length; i++;){
                                if(sezLezioni[i].id == "lezioni_"+id){
                                       sezLezioni[i].style.display="block";
                                 else
                                       sezLezioni[i].style.display="none";
                                 }
                          }
                    }
              </script>
        </head>



    Codice PHP:
    <body>
        <div id="container">

             <div id="header"> 
                   .....
             </div>
                
             <div id="sidebar">
                  ....
             </div>


             <div id="content">
                    <?php
                    
    // connessione            

                    // login utente
                    
                    // Elenco degli esame a cui lo studente è iscritto
                    
    $query "SELECT id, fullname FROM course;";
                    
    $result mysql_query($query$con);
                    echo 
    "Esami";
                    while(
    $row=mysql_fetch_array($result))
                    {
                          echo 
    "$row['id']." ".$row['fullname'];
                     ?>        


                  <button type="
    button" name="mostra" value="mostra" onclick="MostraNascondi(<?php echo $row['id']; ?>);">Visualizza lezioni</button>

                          <div id="lezioni_<?php echo $row['id']; ?>" class="lezioni" style="display:none;">
                     <?php
                                
    // Elenco delle videolezioni dell'esame scelto
                                
    $query1 "SELECT name FROM url WHERE course=$row['id'];";
                                
    $result1 mysql_query($query1$con);
                                echo 
    "Lezioni";
                                while(
    $row1=mysql_fetch_array($result1))
                                {
                                      echo 
    $row1[0];
                                 }
                       
    ?>
                          </div>
                        
              </div>
         </div>
    </body>

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti degli alert nella funzione per capire cosa riceve è come lavora e posta il link alla pagina online
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Quote Originariamente inviata da ferr Visualizza il messaggio
    codice:
    <head>
         <meta charset="utf-8"/>    <!-- codifica dei caratteri -->
         <title>esami</title>
         <link href="style.css" rel="stylesheet" type="text/css"/>
        
          <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
         
          <script type="text/javascript">
                $(function(){
                     $('.switch').click(function(){
                        $(this).next().slideToggle();
                    });
                });
           </script>
    </head>



    Codice PHP:
    <?php
    // Elenco degli esami
    $query "SELECT id, fullname FROM course;";
    $result mysql_query($query$con);
    echo 
    "Esami";
    while(
    $row=mysql_fetch_array($result))
    {
            echo 
    $row['id']." ".$row['fullname'];
    ?>        

    <button class="switch">Visualizza lezioni</button>

    <div class="lezioni" style="display:none;">
    <?php
              
    // Elenco delle lezioni dell'esame scelto
              
    $query1 "SELECT name FROM url WHERE course=$row['id'];";
              
    $result1 mysql_query($query1$con);
              echo 
    "Lezioni";
              while(
    $row1=mysql_fetch_array($result1))
              {
                    echo 
    $row1[0];
              }
    ?>
    </div>
                           
    <?php
    }
    E' tutto giusto, se lo stai testando in locale aggiungi "http:" quando includi la libreria jQuery


Tag per questa discussione

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.