Foros del Web » Programando para Internet » Javascript »

random color sin repetir

Estas en el tema de random color sin repetir en el foro de Javascript en Foros del Web. saludos, busco ayuda por favor si es posible: tengo un random javascript que cambia el color de fondo por medio 8 clases css a 4 ...
  #1 (permalink)  
Antiguo 06/06/2012, 11:45
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Busqueda random color sin repetir

saludos, busco ayuda por favor si es posible:

tengo un random javascript que cambia el color de fondo por medio 8 clases css a 4 divs de forma aleatoria, me funciona pero al hacer random ciertos colores se repiten y esto es lo que NO deseo quiero que al hacer random uno sea distinto del otro aqui les dejo el codigo que tengo

AYUUUDA POR FAVOR!!
Código PHP:

function changeColor(elementcurNumber){
    
curNumber=new Array(1,2,3,4,5,6,7,8);
    
curNumber++;
       
curNumber=Math.floor(Math.random()*8)+1;
    
element.addClass('color' curNumber,500);
    
// So previous classes get removed.
    
element.attr('class''color' curNumber);
    
setTimeout(function(){changeColor(elementcurNumber)}, 2000);  
}

/***el css*****/
.color1{
    
background-image:url(../images/black_square.png);
}

.
color2{
    
background-image:url(../images/blue_square.png);
}
...

/*el html*/

<div id="cuadrouno"></div>
<
div id="cuadrodos"></div>
<
div id="cuadrotres"></div>
<
div id="cuadrocuatro"></div>

<
script>
changeColor($('#cuadrouno'), 0);
changeColor($('#cuadrodos'), 0);
changeColor($('#cuadrotres'), 0);
changeColor($('#cuadrocuatro'), 0);
</script> 
  #2 (permalink)  
Antiguo 06/06/2012, 12:11
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: random color sin repetir

Declara un array global que ingresa los colores de random que se están utilizando, en el script verificas si el color está en el array, así obtienes uno nuevo.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #3 (permalink)  
Antiguo 06/06/2012, 12:14
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: random color sin repetir

Gracias America|UNK por tu pronta respuesta de hecho eso pienso que hay que hacer pero no soy un erudito en javascript y no se como hacerlo, me podrias explicar como? si es asi MUUCHAS GRACIAS!!
  #4 (permalink)  
Antiguo 06/06/2012, 12:49
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: random color sin repetir

Código:
<script type="text/javascript">
var list = new Array();
function changeColor(element){
	if(!list.length){
		list=new Array(1,2,3,4,5,6,7,8);
		list.sort(function() {return 0.5 - Math.random()})
	}
    var curNumber = list.shift();
    element.addClass('color' + curNumber);
    setTimeout(function(){changeColor(element)}, 2000);  
}
</script>


<script type="text/javascript">
changeColor($('#cuadrouno'));
changeColor($('#cuadrodos'));
changeColor($('#cuadrotres'));
changeColor($('#cuadrocuatro'));

</script>
Si te sirve
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 06/06/2012, 13:40
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: random color sin repetir

Amigo muchas gracias por tu interes pero lamentablemente no me funciona; llega un momento determinado en que todos se ponen de un solo color y no rueda (funca) mas
  #6 (permalink)  
Antiguo 06/06/2012, 13:42
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: random color sin repetir

Hola, hice una modificación en tu script, no se si es válido para lo que estás haciendo, ya no se repiten los colores.

Código Javascript:
Ver original
  1. function changeColor(){
  2.  
  3.     var numbers = [], i = 0, arg = arguments
  4.     while(arg[i]){
  5.         while(curNumber = Math.floor( Math.random() * 8 ) + 1)
  6.             if(!numbers[curNumber]) break
  7.         numbers[curNumber] = true
  8.         arg[i++].attr('class', 'color' + curNumber)
  9.     }
  10.     setTimeout(function(){changeColor.apply(this,arg)}, 1000)
  11. }
  12.  
  13. changeColor($('#cuadrouno'),$('#cuadrodos'),$('#cuadrotres'),$('#cuadrocuatro'))
  14. &#8203;

Resultado: http://jsfiddle.net/wZVanG/hvqyD/
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #7 (permalink)  
Antiguo 06/06/2012, 15:00
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: random color sin repetir

Código javascript:
Ver original
  1. <html>
  2.     <head>
  3.         <script>
  4.             Array.prototype.mezclar= function() {
  5.                 var n=this.length;
  6.                 while(n--)
  7.                 {
  8.                     var i=Math.floor(n*Math.random());
  9.                     var tmp =this[i];
  10.                     this[i]=this[n];
  11.                     this[n]=tmp;
  12.                 }
  13.                 return this;
  14.             }
  15.             function cambiaClase(elem,cls){
  16.                 var nElem=elem.length;
  17.                 var nCls=cls.length;
  18.                 var elemento;
  19.                 cls.mezclar();
  20.                 for(var i=0;i<nElem;i++)
  21.                 {
  22.                     document.getElementById(elem[i]).setAttribute("class",cls[i%nCls]);
  23.                 }
  24.             }
  25.             window.onload=function(){
  26.                 var elementos=["cuadrouno","cuadrodos","cuadrotres","cuadrocuatro"];
  27.                 var classes=["color1","color2","color3","color4","color5","color6","color7","color8"];
  28.                 cambiaClase(elementos,classes);
  29.                
  30.                 var elementos2=["cuadroa","cuadrob","cuadroc","cuadrod","cuadroe","cuadrof","cuadrog"];
  31.                 var classes2=["color1","color3","color8"];
  32.                 cambiaClase(elementos2,classes2);
  33.             };
  34.         </script>
  35.         <style>
  36.             .color1 { background-color:red; }
  37.             .color2 { background-color:blue; }
  38.             .color3 { background-color:orange; }
  39.             .color4 { background-color:green; }
  40.             .color5 { background-color:pink; }
  41.             .color6 { background-color:yellow; }
  42.             .color7 { background-color:black; }
  43.             .color8 { background-color:grey; }
  44.         </style>
  45.     </head>
  46.     <body>
  47.         <div id="cuadrouno">1</div>
  48.         <div id="cuadrodos">2</div>
  49.         <div id="cuadrotres">3</div>
  50.         <div id="cuadrocuatro">4</div>
  51.        
  52.         <br/><br/>
  53.        
  54.         <div id="cuadroa">a</div>
  55.         <div id="cuadrob">b</div>
  56.         <div id="cuadroc">c</div>
  57.         <div id="cuadrod">d</div>
  58.         <div id="cuadroe">e</div>
  59.         <div id="cuadrof">f</div>
  60.         <div id="cuadrog">g</div>
  61.     </body>
  62. </html>

Ejemplo en vivo:
http://jsfiddle.net/YDJLL/3/

Tiene dos modos de funcionar. Si el número de clases que le pasas en el array es menor o igual que el número de elementos donde meter esas clases, hará lo que tú has pedido. Meterá sin repetir una clase al azar en cada elemento. Es lo que pasa en el ejemplo 1.

Pero ya que estamos, si el número de clases es menor que el número de elementos, lo que hará será meter las clases al azar en los primeros N elementos (N es el número de clases que le has pasado). Después repetirá dicha secuencia de color con el resto de elementos que queden.
Es lo que se ve en el ejemplo 2.


Cita:
Iniciado por Lynxcraft Ver Mensaje
[CODE]<script type="text/javascript">
var list = new Array();
list=new Array(1,2,3,4,5,6,7,8);
list.sort(function() {return 0.5 - Math.random()});
Ey paisano. Ese sort no está bien balanceado. Con arrays pequeños quizás no se note, pero cuando crezcan, no se mezclará bien.

Última edición por marlanga; 06/06/2012 a las 15:10
  #8 (permalink)  
Antiguo 06/06/2012, 15:18
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: random color sin repetir

marlanga, muchas gracias nos puede servir, probaremos la primera parte con un timeout haber que pasa cualquier cosa te mantendremos informado GRACIAS NUEVAMENTE
  #9 (permalink)  
Antiguo 08/06/2012, 09:04
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: random color sin repetir

hola marlanga, que tal te comento que no he tenido suerte con el script que me pasaste que al decir verdad esta de LUJO, no se si fuera posible hacer en este mismo script hacer que cambien dinamicamente los colores pasando cierto tiempo (setTimeout), es posible hacerlo?
  #10 (permalink)  
Antiguo 08/06/2012, 14:02
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: random color sin repetir

http://jsfiddle.net/YDJLL/5/
  #11 (permalink)  
Antiguo 11/06/2012, 07:03
 
Fecha de Ingreso: septiembre-2011
Ubicación: Duran,Guayas
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: random color sin repetir

¡ERES UN DIOSSSS!, donde quieres que te haga el altar?
MUCHISIMAS GRACIAS BRO!, LA VERDAD MUCHISIMAS GRACIAS ERES UN GRANDE
  #12 (permalink)  
Antiguo 10/10/2012, 21:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 108
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: random color sin repetir

Marlanga por casualidad conoces algún enlace o algún script de un carrusel de imágenes que sea aleatorio, me refiero a que al momento de cargar la página no muestre siempre las mismas imágenes y de ahí siga su recorrido?, y posiblemente si cada imagen posee su propio link independiente y su title independiente también?, ando buscando alguno y todos al momento de cargar la página comienzan igual xD.
__________________
Jlx4
  #13 (permalink)  
Antiguo 11/10/2012, 04:47
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: random color sin repetir

hace poco se trató ese tema
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #14 (permalink)  
Antiguo 11/10/2012, 12:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 108
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: random color sin repetir

lo sé, pero, me refería a si conocen algún script carrusel que sea aleatorio, el script aleatorio no es difícil, pero realizar todo el carrusel, en lo personal, me llevaría tiempo.
__________________
Jlx4
  #15 (permalink)  
Antiguo 11/10/2012, 16:05
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: random color sin repetir

ahora me doy cuenta que tu abristes este tema. si hubieras hecho el esfuerzo de intentar entender al código que te dejó emprear y especialmente esta parte
Cita:
var mezclar = function(n){
for(var j, x, i = n.length; i; j = parseInt(Math.random() * i), x = n[--i], n[i] = n[j], n[j] = x);

return n;
}
corrigiendo lo mencionado a continuación, ya sabrías como barajar el orden de los elementos del array. si además usas el método createElement() para crear las imágenes y, ya el culmen, si usas la etiqueta html <marquee>, .......
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #16 (permalink)  
Antiguo 11/10/2012, 16:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 108
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: random color sin repetir

Gracias IsabelM, pero el código de emprear no es el problema, de hecho lo entiendo, y se lo agradezco, se asemeja un poco al que subí al inicio del tema, pero, a lo que me refería es si existía un carrusel ya creado y yo modificar el script a lo que necesito, ya que no soy un gran experto en el tema crear uno desde cero me tomaría mucho tiempo, y no cuento con ello en este momento, a decir verdad, hace años que no volvía a retomar el diseño y desarrollo web xD, no recordaba para nada la etiqueta <marquee>, te lo agradezco, ahora si lo podré hacer de forma rápida sin necesidad de un script como base. . Gracias nuevamente.
__________________
Jlx4
  #17 (permalink)  
Antiguo 11/10/2012, 17:14
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: random color sin repetir

me he acordado que con respecto al carrusel este viejo código te será útil
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #18 (permalink)  
Antiguo 11/10/2012, 17:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 108
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: random color sin repetir

Te lo agradezco, de verdad muchas gracias.
__________________
Jlx4

Etiquetas: color, funcion, html, random, repetir
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 11:10.