Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Mostrar <li> por orden en lugar de random

Estas en el tema de Mostrar <li> por orden en lugar de random en el foro de Frameworks JS en Foros del Web. Que tal, adapte un script de la web que funciona OK. Muestra el contenido de los <li> que haya cargado de a uno por vez ...
  #1 (permalink)  
Antiguo 16/09/2010, 13:56
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 9 meses
Puntos: 2
Mostrar <li> por orden en lugar de random

Que tal, adapte un script de la web que funciona OK. Muestra el contenido de los <li> que haya cargado de a uno por vez por un lapso de tiempo determinado. Todo esto lo hace aleotoriamente, es decir, con random.

Lo que necesito es que las muestre segun un orden, del menor al mayor por ejemplo. COmo podria editar el script para incorporarle numeros a los divs y que la funcion js lo interprete ?

El ejemplo lleva includio el jquery.js.

Código HTML:
<ul id="tips">
	<li>... if you want to become a better coder you need to eat your vegetables?</li>
	<li>... it takes more time to code a web page then to make a pizza?</li>
	<li>... you should validate your code?</li>
	<li>... jQuery is your friend? For real!</li>
	<li>... no matter what some people claim, you can't learn CSS in 3 hours?</li>
</ul> 
Código HTML:
#tips, #tips li{
	margin:0;
	padding:0;
	list-style:none;
	}
#tips{
	width:250px;
	font-size:16px;
	line-height:120%;
	}
#tips li{
	padding:20px;
	background:#e1e1e1;
	display:none; /* hide the items at first only */
	}
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. this.randomtip = function(){
  4.  
  5.     var pause = 3000; // define the pause for each tip (in milliseconds)
  6.     var length = $("#tips li").length;
  7.     var temp = -1;     
  8.  
  9.     this.getRan = function(){
  10.         // get the random number
  11.         var ran = Math.floor(Math.random()*length) + 1;
  12.         return ran;
  13.     };
  14.     this.show = function(){
  15.         var ran = getRan();
  16.         // to avoid repeating
  17.         while (ran == temp){
  18.             ran = getRan();
  19.         };
  20.         temp = ran;
  21.         $("#tips li").hide();  
  22.         $("#tips li:nth-child(" + ran + ")").fadeIn("fast");       
  23.     };
  24.    
  25.     show(); setInterval(show,pause);
  26.    
  27. };
  28.  
  29. $(document).ready(function(){  
  30.     randomtip();
  31. });
  32.  
  33. </script>
  #2 (permalink)  
Antiguo 16/09/2010, 22:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Mostrar <li> por orden en lugar de random

No entendí muy bien, ¿quieres que en lugar de ser aleatorio te los muestre por orden? En ese caso podrías iniciar un contador y aumentarlo cada vez que se llama a la función show(); y a partir de allí mostrar el elemento.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 17/09/2010, 08:35
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: Mostrar <li> por orden en lugar de random

gracias DAvid por tu respuesta !
lo que necesito es que se muestre por orden, como tu dices.

Lo del contador me parece lo correcto, pero no tendria que incorporarle un numero a cada <li> para que sepa cual mostrar?

Disculpa la pregunta, estoy un poco flojo en javascript y por ahi es mas facil de lo que parece.

Gracias nuevamente .
  #4 (permalink)  
Antiguo 17/09/2010, 10:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Mostrar <li> por orden en lugar de random

No, no es necesario. En la línea 22 de tu código, basta con sustituir la variable ran por el contador.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 20/09/2010, 07:34
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: Mostrar <li> por orden en lugar de random

David, incorporé el contador pero lo que me muestra es la info que está dentro del <li> ultimo. Y luego de este, no muestra nada. No logro hacer que lo muestre desde el primero. Debajo el codigo a ver si pueden darme una mano.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. this.randomtip = function(){
  3.     var i=1;
  4.     var pause = 5500; // define the pause for each tip (in milliseconds) Feel free to make the pause longer so users can have time to read the tips :)
  5.  
  6.     while (i<=7) {
  7.    
  8.         this.show = function(){
  9.         $("#tips li").hide();  
  10.         $("#tips li:nth-child(" + i + ")").fadeIn("fast");     
  11.         };
  12.    
  13.     // initiate the script and also set an interval
  14.     show(); setInterval(show,pause);
  15.  
  16.     i=i+1;
  17.     }
  18. };
  19.  
  20. $(document).ready(function(){  
  21.     randomtip();
  22. });
  23. </script>

Gracias !
  #6 (permalink)  
Antiguo 20/09/2010, 09:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Mostrar <li> por orden en lugar de random

El problema es que estás sobreescribiendo la función show. Prueba esto:
Código Javascript:
Ver original
  1. function nextTip() {
  2.     var child = Number($("#tips").data("current"));
  3.    
  4.     $("#tips li").hide();  
  5.     $("#tips li:nth-child(" + i + ")").fadeIn("fast");
  6.    
  7.     child++;
  8.     $("#tips").data("current", child);
  9. }
  10.  
  11. $(document).ready(function(){
  12.     var pause = 5500;
  13.    
  14.     $("#tips").data("current", 1);
  15.     nextTip();
  16.    
  17.     setInterval(nextTip, pause);
  18. });
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 20/09/2010, 10:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Mostrar <li> por orden en lugar de random

tiene que tener un orden especial?
aca te paso uno que muestra del primero al ultimo

Código HTML:
Ver original
  1. <title>Prueba</title>
  2. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  3. <script type="text/javascript">
  4. $( function(){  
  5.     $("#tips li:eq(0)").show();
  6.     setInterval("mostrar()",1000);
  7. });
  8. mostrar = function(){
  9.     li = $("#tips li:visible").hide();
  10.     liNext = li.next();
  11.     if(liNext.length){
  12.         liNext.show();
  13.     } else {
  14.         $("#tips li:eq(0)").show();
  15.     }
  16. };
  17. #tips, #tips li{
  18.     margin:0;
  19.     padding:0;
  20.     list-style:none;
  21.     }
  22. #tips{
  23.     width:250px;
  24.     font-size:16px;
  25.     line-height:120%;
  26.     }
  27. #tips li{
  28.     padding:20px;
  29.     background:#e1e1e1;
  30.     display:none; /* hide the items at first only */
  31.     }
  32. </head>
  33. <ul id="tips">
  34.     <li>... if you want to become a better coder you need to eat your vegetables?</li>
  35.     <li>... it takes more time to code a web page then to make a pizza?</li>
  36.     <li>... you should validate your code?</li>
  37.     <li>... jQuery is your friend? For real!</li>
  38.     <li>... no matter what some people claim, you can't learn CSS in 3 hours?</li>
  39. </ul>
  40. </body>
  41. </html>
  #8 (permalink)  
Antiguo 21/09/2010, 08:26
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: Mostrar <li> por orden en lugar de random

Gracias Dany por el ejemplo ...
Al final modifiqué un poco el script de DAvid y funcionó ...

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. this.randomtip = function(){
  3.  
  4.     function nextTip() {
  5.     var child = Number($("#tips").data("current"));
  6.    
  7.     if (child > 7) { var child = 1}
  8.     $("#tips li").hide();  
  9.     $("#tips li:nth-child(" + child + ")").fadeIn();
  10.    
  11.     child++;
  12.     $("#tips").data("current", child);
  13.     }
  14.  
  15. $(document).ready(function(){
  16.     var pause = 5250;
  17.    
  18.     $("#tips").data("current", 1);
  19.     nextTip();
  20.    
  21.     setInterval(nextTip, pause);
  22. });
  23.  
  24.    
  25. };
  26.  
  27. $(document).ready(function(){  
  28.     randomtip();
  29. });
  30. </script>

Le agregué esta linea:
Código HTML:
if (child > 7) { var child = 1}
Para que al llegar al ultimo <li> vuelva a mostrar el primero, siempre en Loop, que no termine nunca.

Saludos!

Etiquetas: orden, random
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 06:20.