1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Math.random sin que se repita

Tema en 'Programación y Diseño Web' iniciado por afmendez, 26 Mar 2017.

  1. afmendez

    afmendez Nuevo usuario

    Hola a todos, no se de javascript, vi este código por internet y me funciona a la perfección pero las frases se repiten sin completar un ciclo, me echais una mano? Gracias de antemano!

    function frases_alea(){

    frases = new Array();

    frases[0] = "Todo está diseñado, pero pocas cosas están diseñadas bien.";
    frases[1] = "EL Diseño es un intermediario entre la información y el entendimiento.";
    frases[2] = "El diseño es el embajador silencioso de tu marca.";
    frases[3] = "El 90% del talento de una persona es simplemente interés";
    frases[4] = "Hacer las cosas lo más simple posible pero no más sencillo."
    frases[5] = "El diseño depende en gran medida de las limitaciones."
    frases[6] = "Si un diseño no se siente bien en el corazón, lo que dice el cerebro no importa."
    frases[7] = "El diseño gráfico debe seducir, educar y, quizás lo más importante, provocar una respuesta emocional."
    frases[8] = "Todo es diseño, ¡todo!"
    frases[9] = "Un buen diseño puede soportar la moda de 10 años."
    frases[10] = "El diseño es un lenguaje y lo principal es cómo usas ese lenguaje."
    frases[11] = "No hay diseño gráfico sin disciplina. No hay disciplina sin inteligencia."
    frases[12] = "El diseño es donde la ciencia y el arte se equilibran"
    frases[13] = "La gente ignora el diseño que ignora a la gente."
    frases[14] = "Un diseñador es un planificador con sentido del buen gusto."
    frases[15] = "El diseño nunca debería de decir “Mírame”. Debería de decir: “Mira esto”"
    frases[16] = "El buen diseño es una suerte de clarividencia hecha visual."
    frases[17] = "Un diseño no está terminado hasta que alguien lo está utilizando."
    frases[18] = "Practica un diseño seguro: Usa un concepto."
    frases[19] = "Crea tu propio estilo visual … dejalo ser único para tí e identificable para otros."

    aleatorio=Math.floor(Math.random()*20);

    return frases[aleatorio];

    }
    onload=function(){
    document.getElementById('algo').innerHTML=frases_alea();
    setInterval(function(){document.getElementById('algo').innerHTML=frases_alea();},5000)
    }
     
  2.  
  3. justice13

    justice13 Usuario activo

    ¿Entiendo que lo que pretendes es que no se repita una frase sin que se hayan visto las otras 19?
     
  4. afmendez

    afmendez Nuevo usuario

    Exacto justice13, saludos
     
  5. justice13

    justice13 Usuario activo

    No tiene mucho sentido lo que quieres hacer, pues cada visitante recibirá una frase y no es sencillo controlar eso. Si quisieras mostrar una frase en función al día del mes aún... Tipo una aleatoria a todos los visitantes por igual y que cambiase cada cierto periodo de tiempo o algo así.
     
  6. afmendez

    afmendez Nuevo usuario

    Es que cambia cada 5 segundos: frases_alea();},5000), no hay que clickar ni nada, las frases cambian sin ninguna acción. Tiene todo el sentido, tu estas viendo la web y las frases van cambiando, las lees y no quieres que se repitan...
     
  7. afmendez

    afmendez Nuevo usuario

    Echale un ojo en la web


    http://en-estudio.com/
     
  8. justice13

    justice13 Usuario activo

    Mmm... Vale, ahora creo haberte entendido. Necesitas almacenar los índices que ya ha ido sacando y en cada nuevo random, cuando obtengas el valor aleatorio, comprobar que no esté almacenado, podrías crear un arrayán donde almacenar los valores que ya han salido y comparar con los que van a salir para que sí se repite, se vuelva a repetir el random hasta que sea uno que no coincida con el arrayán de números (índices) que han salido. Me pillas fuera de casa pero no es complicado, son unas pocas líneas más.
     
  9. justice13

    justice13 Usuario activo

    Se me olvidaba. También debes controlar que una vez se llene el array de índices (en otras palabras: que hayan salido todas las frases), reiniciarlo pues si no cuando llegue a la última frase, no podrá volver al comienzo porque no habrá índice "libre" (siempre coincidirá porque han salido el 100% de las frases).

    Espero haberte podido dar una pista sobre cómo hacerlo. Si necesitas que te aclare alguna de estas cosas, dime :)
     
  10. afmendez

    afmendez Nuevo usuario

    Entiendo mas o menos lo que dices, pero como dije al principio no se nada de javascript... De todas maneras me acaban de responder en otro foro y me funciona perfecto (aun no la he subido) Por si a alguien le interesa pego el código... Justice13 muy amable, muchas gracias :)

    onload = function() {
    var frases = [];
    frases[0] = "Todo está diseñado, pero pocas cosas están diseñadas bien.";
    frases[1] = "El Diseño es un intermediario entre la información y el entendimiento.";
    frases[2] = "El diseño es el embajador silencioso de tu marca.";
    frases[3] = "El 90% del talento de una persona es simplemente interés";
    frases[4] = "Hacer las cosas lo más simple posible pero no más sencillo."
    frases[5] = "El diseño depende en gran medida de las limitaciones."
    frases[6] = "Si un diseño no se siente bien en el corazón, lo que dice el cerebro no importa."
    frases[7] = "El diseño gráfico debe seducir, educar y, quizás lo más importante, provocar una respuesta emocional."
    frases[8] = "Todo es diseño, ¡todo!"
    frases[9] = "Un buen diseño puede soportar la moda de 10 años."
    frases[10] = "El diseño es un lenguaje y lo principal es cómo usas ese lenguaje."
    frases[11] = "No hay diseño gráfico sin disciplina. No hay disciplina sin inteligencia."
    frases[12] = "El diseño es donde la ciencia y el arte se equilibran"
    frases[13] = "La gente ignora el diseño que ignora a la gente."
    frases[14] = "Un diseñador es un planificador con sentido del buen gusto."
    frases[15] = "El diseño nunca debería de decir “Mírame”. Debería de decir: “Mira esto”"
    frases[16] = "El buen diseño es una suerte de clarividencia hecha visual."
    frases[17] = "Un diseño no está terminado hasta que alguien lo está utilizando."
    frases[18] = "Practica un diseño seguro: Usa un concepto."
    frases[19] = "Crea tu propio estilo visual … dejalo ser único para tí e identificable para otros."
    var total = frases.length;
    var cont = 0;
    var div_dest = document.getElementById('algo');
    div_dest.innerHTML = frases[cont];
    setInterval(function() {
    cont++;
    if (cont < total) {
    div_dest.innerHTML = frases[cont];
    } else {
    cont = 0;
    div_dest.innerHTML = frases[cont];
    }
    }, 5000)
    }
     
  11. Sphyr0

    Sphyr0 Usuario activo

    Si el orden de las frases te es indiferente, te va a servir, pues el código solo va incrementando en 1 el valor de la variable 'cont', que sirve para tomar el índice del array frases (y mostrar su valor/frase correspondiente). Si por el contrario quieres que sea aleatorio como era inicialmente, deberías almacenar los índices ya mostrados en una cookie, para, antes de cambiar de frase nuevamente, consultar si el nuevo índice ya se utilizó... :)
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·