[RISOLTO]assegnare onclick ad un elemento td

di Anonimizzato13956 il
5 risposte
Buona sera forum . Il mio obiettivo e quello di far comparire il contenuto di un div quando clicco su un elemento td. Esempio se clicco sull'elemento della tabella 1.1 deve comparire il div con contenuto 1.1.
Allora ho buttato giù alcune righe di codice che ora vi posto :
<!DOCTYPE HTML>
<html>
   <head>
      <title>Prova2</title>
      <style>
        .div{display:none}
      </style>
      <script> 
      function showDivOnClick(e)
      {
         e.style.display = "block";
         setTimoeut(e.style.display = "none", 5000);
      }
      </script>
   </head>
   <body>
      <table border="1">
         <thead>
           <th>Campo1</th>
           <th>Campo2</th>
         </thead> 
         <tbody>
           <tr>
             <td id = "uno.uno" onclick = showDivOnClick(document.getElementById("div1")>1.1</td>
             <td id = "uno.due">1.2</td>
           </tr>
           <tr>
             <td id = "due.uno">2.1</td>
             <td id = "due.due">2.2</td>
           </tr>
         </tbody>
      </table>
      <div class = "div" id = "div1">
         1.1
      </div>
      <div class = "div" id = "div2">
         1.2
      </div>
      <div class = "div" id = "div3">
         2.1
      </div>
      <div class = "div" id = "div4">
         2.2
      </div>  
   </body>
</html>
Quando provo a cliccare sull'elemento della tabella, dove ho inserito la funzione con l'onclick mi da questo errore: Uncaught SyntaxError: Unexpected token } ;
Ora in primo luogo vorrei sapere se sto procedendo nel modo giusto. E poi se mi potete aiutare a far funzionare questo piccolo script . Grazie

5 Risposte

  • onclick = showDivOnClick(document.getElementById("div1")
    Manca la parentesi ) di chiusura
  • Oh grazie . Comunque adesso mi da questo errore: Uncaught ReferenceError: none is not defined; quindi credo che ci sia qualcosa che non va nel modo in cui ho provato a fare questo script Consigli??
  • Aggiornamento della situazione. Dopo alcune prove sono riuscito a correggere alcuni errori.
    Il codice è questo:
    <!DOCTYPE HTML>
    <html>
       <head>
          <title>Prova2</title>
          <style>
            .div{display:none}
          </style>
          <script type="text/javascript">
          function showDivOnClick(e)
          {
             e.style.display = "block";
             setTimeout('e.style.display=\'none\'', 5000);
          }
          </script>
       </head>
       <body>
          <table border="1">
             <thead>
               <th>Campo1</th>
               <th>Campo2</th>
             </thead> 
             <tbody>
               <tr>
                 <td id = "uno.uno" onclick = "showDivOnClick(document.getElementById(&#34div1&#34))">1.1</td>
                 <td id = "uno.due" onclick = "showDivOnClick(document.getElementById(&#34div2&#34))">1.2</td>
               </tr>
               <tr>
                 <td id = "due.uno" onclick = "showDivOnClick(document.getElementById(&#34div3&#34))">2.1</td>
                 <td id = "due.due" onclick = "showDivOnClick(document.getElementById(&#34div4&#34))">2.2</td>
               </tr>
             </tbody>
          </table>
         
          <div class = "div" id = "div1">
             1.1
          </div>
          <div class = "div" id = "div2">
             1.2
          </div>
          <div class = "div" id = "div3">
             2.1
          </div>
          <div class = "div" id = "div4">
             2.2
          </div>  
       </body>
    </html>
    Ora mi restituisce come errore questo : Uncaught ReferenceError: e is not defined (anonymous function).
    Praticamente da quello che ho capito esegue la prima istruzione della funzione, perchè il contenuto del div viene mostrato. Ma dopo i 5 secondi impostati nel setTimeout, questo non scompare ma mi restituisce l'errore che vi ho esposto sopra. Aspetto vostri consigli. Grazie
  • Ciao, per poter passare un argomento alla funzione che usi nel setTimout devi usare una funzione anonima:
    
    function showDivOnClick(e) {
        e.style.display = "block";
        setTimeout( function() {
            e.style.display = "none"; }
            , 5000);
    }
    
  • Grazie mille adesso funziona e ho capito come funziona questo aspetto di javascript. Grazie a tutti per l'aiuto
Devi accedere o registrarti per scrivere nel forum
5 risposte