Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cómo hacer una sola función con variable incremental???

Estas en el tema de Cómo hacer una sola función con variable incremental??? en el foro de Javascript en Foros del Web. Hola Mundo WEB..... Tengo la siguiente función que es un PopUp jQuery, @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original $ ( function ( ) { ...
  #1 (permalink)  
Antiguo 18/06/2013, 10:02
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Cómo hacer una sola función con variable incremental???

Hola Mundo WEB.....

Tengo la siguiente función que es un PopUp jQuery,

Código Javascript:
Ver original
  1. $(function() {
  2.  
  3.             function launch() {
  4.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  5.             }
  6.            
  7.             $('#try-1'.$num).click(function(e) {
  8.                 $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  9.                     $("#sign_up").find("input:first").focus();
  10.                 }});
  11.                
  12.                 e.preventDefault();
  13.             });
  14.            
  15.            
  16.             $('table tr:nth-child(even)').addClass('stripe');
  17.         });
  18.     </script>

Y tengo las siguientes líneas HTML.

Código HTML:
Ver original
  1. <A href="#" id="try-1" ><img src="img/carpeta.png"/></A>
La variable 1 es una variable que la voy tomando por PHP y va consultando un id de un mysql Query.
Por lo que ese valor no necesariamente va en consecutivo. Aunque si la solución sale en orden consecutivo yo cambio mi manera de ordenar mis filas <A id="try-consecutivo"></A>.

Algo así como:

$num=1;
$num=++;

try- $num

Saludos a toda la banda del Foro Web. Mil gracias de antemano por su ayuda.



Pero el id=try-1 tiene que ir tomando el mismo número tanto en la función javascript como en las siguientes línas HTML.

Saludos a todos y espero me puedan ayudar.

Última edición por benjaminvera; 18/06/2013 a las 10:07
  #2 (permalink)  
Antiguo 18/06/2013, 10:43
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

La función sirve para la primera fila en el <body> denominada id=try-1. Pero para las demás filas también denominadas id=try-1 NO FUNCIONA.

Si yo le cambio el id=try-1 a la segunda fila quedando de la siguiente manera.

<tr><td><A href="#" id="try-1" ><img src="img/carpeta.png"/></A></td></tr>
<tr><td><A href="#" id="try-2" ><img src="img/carpeta.png"/></A></td></tr>
<tr><td><A href="#" id="try-3" ><img src="img/carpeta.png"/></A></td></tr>
<tr><td><A href="#" id="try-4" ><img src="img/carpeta.png"/></A></td></tr>
<tr><td><A href="#" id="try-5" ><img src="img/carpeta.png"/></A></td></tr>
<tr><td><A href="#" id="try-6" ><img src="img/carpeta.png"/></A></td></tr>

Cómo hago para que la función JavaScript funcione para cualquier número id ????

Código Javascript:
Ver original
  1. function launch() {
  2.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  3.             }
  4.            
  5.             $('#try-1').click(function(e) {
  6.                 $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  7.                     $("#sign_up").find("input:first").focus();
  8.                 }});
  9.                
  10.                 e.preventDefault();
  11.             });
  12.            
  13.            
  14.             $('table tr:nth-child(even)').addClass('stripe');
  15.         });

Saludos.
  #3 (permalink)  
Antiguo 18/06/2013, 11:25
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 3 meses
Puntos: 53
Respuesta: Cómo hacer una sola función con variable incremental???

podrias probar con las clases en vez de ids

Cita:
$('.tryclass').click
o hacer un for donde concatenes el nombre estandar con el autoincrementable
Cita:
for(i=1;i<10;i++)
{
$('#try-'+i).click(function(e) {
$("#sign_up").lightbox_me({centered: true, onLoad: function() {
$("#sign_up").find("input:first").focus();
}});

e.preventDefault();
});
}
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #4 (permalink)  
Antiguo 18/06/2013, 13:02
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

pirruman....

Mil gracias por tu atención y respuesta.

Otra duda....

En la función JavaScript que tengo resulta que hay una palabra clave que dice "CLICK" y resulta que va funcionando con cada click que le das.

Es decir.... si yo tengo el siguiente arreglo de filas,

Código HTML:
Ver original
  1. <tr><td><A href="#" id="try-1" ><img src="img/carpeta.png"/></A></td></tr>
  2. <tr><td><A href="#" id="try-2" ><img src="img/carpeta.png"/></A></td></tr>
  3. <tr><td><A href="#" id="try-3" ><img src="img/carpeta.png"/></A></td></tr>
  4. <tr><td><A href="#" id="try-4" ><img src="img/carpeta.png"/></A></td></tr>
  5. <tr><td><A href="#" id="try-5" ><img src="img/carpeta.png"/></A></td></tr>
  6. <tr><td><A href="#" id="try-6" ><img src="img/carpeta.png"/></A></td></tr>

Y resulta que me pongo sobre el ícono carpeta.png de la 6ta fila resulta que el script me va arrojando la opción # 1 de la 1ra fila y hasta que doy con el 6to click me muestra los archivos que hay en la 6ta fila.

Pongo de nuevo la función PopUp Jquery que me está trabajando mal.
Me va mostrando las ventanas PopUp's pero de manera consecutiva tomando en cuanta el número de click's y no el número id= del evento.

Código Javascript:
Ver original
  1. $(function() {
  2.        var f;
  3.   for(f=1;f<=10;f++)
  4.             function launch() {
  5.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  6.             }
  7.            
  8.             for(i=1;i<10;i++)
  9.             {
  10.             $('#try-'+i).click(function(e) {
  11.             $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  12.             $("#sign_up").find("input:first").focus();
  13.             }});
  14.            
  15.             e.preventDefault();
  16.             });
  17.             }          
  18.            
  19.             $('table tr:nth-child(even)').addClass('stripe');
  20.         });

Alguna ayudita...... o sugerencia...

Por su atención Mil Gracias.....
  #5 (permalink)  
Antiguo 18/06/2013, 13:05
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

PIRRUMAN....


Mil gracias por tu atención y respuesta.

Otra duda....

En la función JavaScript que tengo resulta que hay una palabra clave que dice "CLICK" y resulta que va funcionando con cada click que le das.

Es decir.... si yo tengo el siguiente arreglo de filas,

Código HTML:
Ver original
  1. <tr><td><A href="#" id="try-1" ><img src="img/carpeta.png"/></A></td></tr>
  2. <tr><td><A href="#" id="try-2" ><img src="img/carpeta.png"/></A></td></tr>
  3. <tr><td><A href="#" id="try-3" ><img src="img/carpeta.png"/></A></td></tr>
  4. <tr><td><A href="#" id="try-4" ><img src="img/carpeta.png"/></A></td></tr>
  5. <tr><td><A href="#" id="try-5" ><img src="img/carpeta.png"/></A></td></tr>
  6. <tr><td><A href="#" id="try-6" ><img src="img/carpeta.png"/></A></td></tr>

Y resulta que me pongo sobre el ícono carpeta.png de la 6ta fila resulta que el script me va arrojando la opción # 1 de la 1ra fila y hasta que doy con el 6to click me muestra los archivos que hay en la 6ta fila.

Pongo de nuevo la función PopUp Jquery que me está trabajando mal.
Me va mostrando las ventanas PopUp's pero de manera consecutiva tomando en cuanta el número de click's y no el número id= del evento.

Código Javascript:
Ver original
  1. $(function() {
  2.        var f;
  3.   for(f=1;f<=10;f++)
  4.             function launch() {
  5.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  6.             }
  7.            
  8.             for(i=1;i<10;i++)
  9.             {
  10.             $('#try-'+i).click(function(e) {
  11.             $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  12.             $("#sign_up").find("input:first").focus();
  13.             }});
  14.            
  15.             e.preventDefault();
  16.             });
  17.             }          
  18.            
  19.             $('table tr:nth-child(even)').addClass('stripe');
  20.         });

Alguna ayudita...... o sugerencia...

Por su atención Mil Gracias.....
  #6 (permalink)  
Antiguo 18/06/2013, 13:54
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 3 meses
Puntos: 53
Respuesta: Cómo hacer una sola función con variable incremental???

no estoy muy seguro de como trabaj tu funcion pero creo que el primer for esta demas
Código Javascript:
Ver original
  1. for(f=1;f<=10;f++)

el for que te dije era para asignar la funcion click a cada id que necesites, en cambia con ese for inicial estas asignando 10 veces lo mismo quizas por ahi sea el problema , podrias colocar tu codigo completo para verificarlo , gracias
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #7 (permalink)  
Antiguo 18/06/2013, 15:51
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

Purruman...


Ahí va mi código completo....

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <SCRIPT LANGUAGE="JavaScript">
  4. <!--// Begin
  5. function popUp(URL) {
  6. day = new Date();
  7. id = day.getTime();
  8. eval("page" + id + " = window.open(URL,'" + id + "', 'title=0,directories=0,toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=400,height=450,left = 433,top = 109');");
  9. }
  10. // End -->
  11. </script>
  12. <!--  BEGIN PopUp jQuery  -->
  13.     <script src="js/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script>
  14.     <script src="js/jquery.lightbox_me.js" type="text/javascript" charset="utf-8"></script>
  15.     <script src="js/popups_number.js" type="text/javascript" charset="utf-8"></script>
  16. <link href="css/style_pupup.css" rel="stylesheet" type="text/css" />
  17. <!--  END PopUp jQuery  -->
  18. </head>
  19. <body>
  20. <table><tr>
  21.     <!--  Inicia carpeta buscador   --------------------------   -->
  22.     <td>
  23.  
  24.   <?php
  25. $tr=0;
  26. $f=0;
  27. while($rd->fetch())
  28.  
  29. {
  30.  
  31.    $id  = $rd->acu_id;
  32.  
  33.     echo '<A href="#" id="try-'.++$f.'" ><img src="img/carpeta.png"/></A>';
  34.   ?>
  35.             <div id="sign_up">
  36.               <?php
  37.               $the_array = Array();
  38.               $handle = opendir("upload_DGTIC/".$rd->pro_id."/".$res->asu_id."/".$id."/.");
  39.               while (false !== ($file = readdir($handle))) {
  40.              if ($file != "." && $file != "..") {
  41.              $the_array[] = $file;
  42.              }
  43.               }
  44.               closedir($handle);
  45.               sort ($the_array);
  46.               //echo "<HR width=10% align=center><HR width=10% align=center>";
  47.               foreach($the_array as $val){
  48.              echo "<a href=\"upload_DGTIC/".$rd->pro_id."/".$res->asu_id."/".$id."/$val\" target=_blank>$val</a><br>";
  49.               }
  50.               ?>
  51.                 <a id="close_x" class="close sprited" href="#">close</a>
  52.             </div> <!-- END div id="sign_up"  -->
  53.  
  54.     </td>
  55.     <!--  Termina carpeta buscador --------------------------   -->
  56.   </tr>
  57.   <?php }  //  End while
  58. ?>
  59. </table>
  60.  
  61. </bddy>
  62. </html>

Este archivo jquery-1.4.2.min.js lo puedes bajar desde internet.
Este archivo jquery.lightbox_me.js también.

Y este archivo jquery.lightbox_me.js aquí está el script.
Código Javascript:
Ver original
  1. $(function() {
  2.          
  3.             function launch() {
  4.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  5.             }
  6.            
  7.             for(i=1;i<10;i++)
  8.             {
  9.             $('#try-'+i).click(function(e) {
  10.             $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  11.             $("#sign_up").find("input:first").focus();
  12.             }});
  13.            
  14.             e.preventDefault();
  15.             });
  16.             }
  17. /*
  18.             $('#try-1').click(function(e) {
  19.                 $("#sign_up").lightbox_me({centered: true, onLoad: function() {
  20.                     $("#sign_up").find("input:first").focus();
  21.                 }});
  22.                
  23.                 e.preventDefault();
  24.             });
  25. */
  26.            
  27.             $('table tr:nth-child(even)').addClass('stripe');
  28.         });

Espero te resulte..... el documento HTML está resumido sólo con una con una sola lína de tabla en PHP. Y lo que hace el código PHP es ir abriendo varias rutas de directorios con sus respectivos archivos contenidos en cada PopUp que saca el código Jquery's.

Espero que me haya podido expresar por escrito correctamente.

P.D.

De hecho el código PHP lo que trae son rutas de archivos ordenados de la sigueinte manera.

upload_DGTIC/5/12/22/ es la primera ruta del directorio a enlistar sus archivos.
upload_DGTIC/4/8/23/ es la segunda ruta del directorio a enlistar sus archivos.
upload_DGTIC/3/7/25/ es la tercera ruta del directorio a enlistar sus archivos.
upload_DGTIC/2/6/26/ es la cuarta ruta del directorio a enlistar sus archivos.
upload_DGTIC/1/11/30/ es la quinta ruta del directorio a enlistar sus archivos.
upload_DGTIC/2/6/29/ es la sexta ruta del directorio a enlistar sus archivos.

Y así sucesivamente.

Saludos

Última edición por benjaminvera; 18/06/2013 a las 16:10
  #8 (permalink)  
Antiguo 18/06/2013, 16:19
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

Y aquí el problema radica en que si pongo mi cursor sobre el ícono carpeta.png de la sexta fila lo que ejecuta la función

Código Javascript:
Ver original
  1. function launch() {
  2.                  $('#sign_up').lightbox_me({centered: true, onLoad: function() { $('#sign_up').find('input:first').focus()}});
  3.             }
  4.            
  5.             for(i=1;i<10;i++)
  6.             {
  7.             $('#try-'+i).[B]click[/B](function(e) {

Que solo hasta el click # 6 me muestra los archivos que están en la fila número 6.
Es decir, me muestra los archivos del siguente path.

upload_DGTIC/2/6/29/

que es la sexta ruta del directorio a enlistar sus archivos.

Y NO me llama la ruta del directorio de la fila 6 en caso de que yo ponga el cursor sobre el ícono carpeta.png de la FILA 6.
  #9 (permalink)  
Antiguo 18/06/2013, 20:30
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

La función JavaScript quedó de la siguente manera.

Código Javascript:
Ver original
  1. $(function()
  2. {
  3.      
  4.     for(var i=1;i<=300;i++)
  5.     {
  6.         (function(i){
  7.             $('#try-'+i).click(function(e){
  8.                 $("#sign_up"+i).lightbox_me({centered: true});
  9.                     e.preventDefault();
  10.                 });
  11.         })(i);
  12.     }
  13.             $('table tr:nth-child(even)').addClass('stripe');});

Y la parte del body quedó de la siguente manera....
Con estas variables definidas previamente.

Código PHP:
Ver original
  1. $d=0;++$d;
  2. $f=0;++$f;
  3. $g=0;++$g;

Código HTML:
Ver original
  1. <td>
  2.    <div id="demo<?php echo $d++;?>">
  3.     <A href="#" id="try-<?php echo $f++;?>" class="try sprited" ><img src="img/carpeta.png"/></A>
  4.     <div id="sign_up<?php echo $g++;?>" style="display:none;" >
  5.                    <div class="demo white">
  6.  
  7.       <?php  
  8.               $the_array = Array();
  9.               $handle = opendir("upload_DGTIC/".$rd->pro_id."/".$res->asu_id."/".$id."/.");
  10.               while (false !== ($file = readdir($handle))) {
  11.              if ($file != "." && $file != "..") {
  12.              $the_array[] = $file;
  13.              }
  14.               }
  15.               closedir($handle);
  16.               sort ($the_array);
  17.               foreach($the_array as $val){
  18.              echo "<a href=\"upload_DGTIC/".$rd->pro_id."/".$res->asu_id."/".$id."/$val\" target=_blank>$val</a><br>";
  19.               }
  20.               ?>
  21.         <a id="close_x" class="close sprited" href="#">close</a>
  22.                 </div>  <!-- END div class="demo white"  -->
  23.  
  24.             </div> <!-- END div id="sign_up"  -->
  25.     </div>   <!-- END div id="demo"  -->
  26. </td>
  27.     <!--  Termina carpeta buscador --------------------------   -->
  #10 (permalink)  
Antiguo 18/06/2013, 20:32
 
Fecha de Ingreso: junio-2008
Mensajes: 101
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Cómo hacer una sola función con variable incremental???

MIL GRACIAS A PIRRUMAN POR SU APORTACIÓN.






Etiquetas: html, input, jquery, php, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:29.