Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Problema con apri chiudi dinamico
Forum - Javascript - Problema con apri chiudi dinamico

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 14:30
Giovedì, 20/06/2013
Salve ragazzi ho necessità di risolvere urgentissimamente un problema. In pratica ho questo codice
Codice sorgente - presumibilmente Delphi

  1. <?php $n = 10;?>
  2. <script type="text/javascript">
  3. function SimulaLink(ID)
  4. {
  5. var i = 1;
  6. for (i=1; i < <?php echo $n; ?>; i++)
  7. {
  8.  
  9. document.getElementById("MioDIV_" + i).style.position = "absolute";
  10.  
  11. if (i == ID)
  12. {
  13.         document.getElementById("MioDIV_" + ID).style.visibility = "visible";
  14.         document.getElementById("MioDIV_" + ID).style.position = "absolute";
  15.         document.getElementById("MioDIV_" + ID).style.position = "fixed";
  16.         document.getElementById("MioDIV_" + ID).style.bottom = "0";            
  17. }
  18.  
  19. }
  20. }
  21.        
  22. </script>
  23.  
  24. <?php
  25.         for($i=1; $i<$n; $i++) {
  26.         ?>
  27.         <a href="javascript:SimulaLink(<?php echo $i; ?>)">LINK <?php echo $i; ?></a>
  28.        
  29.        
  30.         <?php
  31.         }
  32.         for($i=1; $i<$n; $i++) {
  33.         ?>
  34.                 <div style="bottom: 0; background: #eee; left: 200px; visibility: hidden; width: 512px; height: 470px; border: 1px solid #ddd; " id="MioDIV_<?php echo "$i"; ?>">
  35.                         CONTENUTO <?php echo $i; ?>
  36.                        
  37.         <?php
  38.         }
  39.         ?>



che funziona egregiamente. vorrei implementare però una funzione che all'apertura di un div chiuda l'altro div e così via.
Es: apro il MioDIV_1, nell'aprire il MioDIV_2 vorrei che MioDIV_1 si chiudesse e lasciasse posto al MioDIV_2. Come posso fare?
Grazie .

PM Quote
Avatar
Uno sciame di API (Member)
Pro


Messaggi: 66
Iscritto: 10/07/2012

Segnala al moderatore
Postato alle 18:31
Giovedì, 20/06/2013
Prova con questo

Codice sorgente - presumibilmente Delphi

  1. <?php $n = 10;?>
  2. <script type="text/javascript">
  3. var last_ID = false;
  4. function SimulaLink(ID)
  5. {
  6. var i = 1;
  7. if (last_ID != false){
  8. document.getElementById("MioDIV_" + last_ID).style.visibility = "hidden";
  9. }
  10. last_ID = ID;
  11. for (i=1; i < <?php echo $n; ?>; i++)
  12. {
  13. document.getElementById("MioDIV_" + i).style.position = "absolute";
  14. if (i == ID)
  15. {
  16. document.getElementById("MioDIV_" + ID).style.visibility = "visible";
  17. document.getElementById("MioDIV_" + ID).style.position = "fixed";
  18. document.getElementById("MioDIV_" + ID).style.bottom = "0";
  19. }
  20. }
  21. }
  22. </script>
  23. <?php
  24. for($i=1; $i<$n; $i++) {
  25. ?>
  26. <a href="javascript:SimulaLink(<?php echo $i; ?>)">LINK <?php echo $i; ?></a>
  27. <?php
  28. }
  29. for($i=1; $i<$n; $i++) {
  30. ?>
  31. <div style="bottom: 0; background: #eee; left: 200px; visibility: hidden; width: 512px; height: 470px; border: 1px solid #ddd; " id="MioDIV_<?php echo "$i"; ?>">
  32. CONTENUTO <?php echo $i; ?>
  33. <?php
  34. }
  35. ?>



P.S. Perchè alle righe 14 e 15 hai scritto cosi?
Codice sorgente - presumibilmente Plain Text

  1. document.getElementById("MioDIV_" + ID).style.position = "absolute";
  2. document.getElementById("MioDIV_" + ID).style.position = "fixed";


Quando setti position a fixed, il settaggio eseguito prima viene perso, infatti nel codice che ti ho scritto io ho scritto solo:
Codice sorgente - presumibilmente Plain Text

  1. document.getElementById("MioDIV_" + ID).style.position = "fixed";


Ciao :k:


A gent fann tant e' signur, e ppo s' fottn e mllun! (www.youtube.com/watch?v=N6xUYGo0Log)
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 12:47
Mercoledì, 03/07/2013
Innanzitutto ti ringrazio per la riposta e per come funziona. Però ho notato un piccolo problema: in pratica quando apro un div si dovrebbe aprire anche un iframe all'interno del div. Il src dell'iframe è dato dalla funzione funzione onclick

Codice sorgente - presumibilmente Javascript

  1. <script>
  2. function go(loc){
  3.                                 document.getElementById('name_frame').src = loc;
  4.                         }
  5. </script>
  6. <?php
  7. for($i=1; $i<$n; $i++) {
  8. ?>
  9. <a href="javascript:SimulaLink(<?php echo $i; ?>)" onclick="go('indirizzo_iframe')">LINK <?php echo $i; ?></a>
  10. <?php
  11. }



Fin qui tutto bene, se non fosse che cambia src dell'iframe solo al click del MIO_DIV_0, a differenza degli altri n div dove invece non aggiorna alcun src. Posto il codice completo

Codice sorgente - presumibilmente Delphi

  1. <?php $n = 10;?>
  2.     <script type="text/javascript">
  3.     var last_ID = false;
  4.     function SimulaLink(ID)
  5.     {
  6.     var i = 1;
  7.     if (last_ID != false){
  8.     document.getElementById("MioDIV_" + last_ID).style.visibility = "hidden";
  9.     }
  10.     last_ID = ID;
  11.     for (i=1; i < <?php echo $n; ?>; i++)
  12.     {
  13.     document.getElementById("MioDIV_" + i).style.position = "absolute";
  14.     if (i == ID)
  15.     {
  16.     document.getElementById("MioDIV_" + ID).style.visibility = "visible";
  17.     document.getElementById("MioDIV_" + ID).style.position = "fixed";
  18.     document.getElementById("MioDIV_" + ID).style.bottom = "0";
  19.     }
  20.     }
  21.     }
  22.     </script>
  23.     <?php
  24.     for($i=1; $i<$n; $i++) {
  25.     ?>
  26.     <a href="javascript:SimulaLink(<?php echo $i; ?>)">LINK <?php echo $i; ?></a>
  27.     <?php
  28.     }
  29.     for($i=1; $i<$n; $i++) {
  30.     ?>
  31.     <div style="bottom: 0; background: #eee; left: 200px; visibility: hidden; width: 512px; height: 470px; border: 1px solid #ddd; " id="MioDIV_<?php echo "$i"; ?>">
  32.     CONTENUTO <?php echo $i; ?>
  33. <iframe src="" id="name_frame" ></iframe>              
  34.     <?php
  35.     }
  36.     ?>



Dove sbaglio? Grazie ancora

Ultima modifica effettuata da giocala88 il 03/07/2013 alle 12:48
PM Quote
Avatar
Uno sciame di API (Member)
Pro


Messaggi: 66
Iscritto: 10/07/2012

Segnala al moderatore
Postato alle 10:21
Venerdì, 05/07/2013
Credo che il problema sia nel fatto che la funzione JavaScript dovrebbe essere
Codice sorgente - presumibilmente Javascript

  1. function go(id, loc){
  2. document.getElementById(id').src = loc;
  3. }


e l'ultima parte dello script PHP dovrebbe essere
Codice sorgente - presumibilmente Javascript

  1. <?php
  2. for($i=1; $i<$n; $i++) {
  3. ?>
  4. <a href="javascript:SimulaLink(<?php echo $i; ?>)">LINK <?php echo $i; ?></a>
  5. <?php
  6. }
  7. for($i=1; $i<$n; $i++) {
  8. ?>
  9. <div style="bottom: 0; background: #eee; left: 200px; visibility: hidden; width: 512px; height: 470px; border: 1px solid #ddd; " id="MioDIV_<?php echo "$i"; ?>">
  10. CONTENUTO <?php echo $i; ?>
  11. <iframe src="" id="name_frame_<?php echo $i; ?>" ></iframe>              
  12. <?php
  13. }
  14. ?>



Così non solo hai un ID diverso per ogni iframe, ma hai anche la possibilità di dire alla funzione javascript su quale iframe deve settare l'indirizzo (src).

Ovviamente, il codice PHP che genera i tag <a>  dovrà essere modificato con:
Codice sorgente - presumibilmente Plain Text

  1. <?php for($i=1; $i<$n; $i++) { ?> <a href="javascript:SimulaLink(<?php echo $i; ?>)" onclick="go('name_frame_<?php echo $i; ?>', 'indirizzo_iframe')">LINK <?php echo $i; ?></a> <?php } ?>



Spero di esserti stato di aiuto, ciao :)


A gent fann tant e' signur, e ppo s' fottn e mllun! (www.youtube.com/watch?v=N6xUYGo0Log)
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 15:42
Venerdì, 05/07/2013
Sei stato super ...comunque ho un altro problema ananlogo all'iframe ma collegato al form. In pratica all'interno di ogni div c'è anche un
form in ajax. Considerando quanto mi hai detto ho provato a fare così

Codice sorgente - presumibilmente Plain Text

  1. <script>
  2.                         $(document).ready(function() {
  3.                        
  4.                                 for(i=0; i < <?php echo $n; ?>; i++) {
  5.                        
  6.                                 $("#input_form_pubblica_" + i).submit(function(){
  7.                                
  8.                                          $(".loading").show(); 
  9. ....
  10.  
  11. }



ma non va, cioè non fa il submit. Se riuscissi a risolvermi anche questo problema sarebbe perfetto. :k:
Grazie

PM Quote
Avatar
Uno sciame di API (Member)
Pro


Messaggi: 66
Iscritto: 10/07/2012

Segnala al moderatore
Postato alle 13:45
Domenica, 07/07/2013
Testo quotato

Postato originariamente da giocala88:

Sei stato super ...comunque ho un altro problema ananlogo all'iframe ma collegato al form. In pratica all'interno di ogni div c'è anche un
form in ajax. Considerando quanto mi hai detto ho provato a fare così

Codice sorgente - presumibilmente Plain Text

  1. <script>
  2.                         $(document).ready(function() {
  3.                        
  4.                                 for(i=0; i < <?php echo $n; ?>; i++) {
  5.                        
  6.                                 $("#input_form_pubblica_" + i).submit(function(){
  7.                                
  8.                                          $(".loading").show(); 
  9. ....
  10.  
  11. }



ma non va, cioè non fa il submit. Se riuscissi a risolvermi anche questo problema sarebbe perfetto. :k:
Grazie



Ho notato che nel tuo codice ci sono delle parentesi non chiuse, è capace che sia questo il problema :) , $("#id").submit() sembra corretto, però purtroppo ora non posso esserti molto di aiuto perché, non usando jQuery, non lo conosco :( .
Su internet ho trovato questa pagina:
http://stackoverflow.com/questions/1960240/jquery-ajax-sub ...
Credo che ti possa essere utile, ciao :D.


A gent fann tant e' signur, e ppo s' fottn e mllun! (www.youtube.com/watch?v=N6xUYGo0Log)
PM Quote