Pregunta

Necesito poder rotar el contenido dentro de un marcador de posición basado en un porcentaje como este. La rotación ocurrirá al cargar la página. Por lo tanto, cada vez que un usuario vuelve a cargar una página, tiene estas posibilidades de ver el contenido 1, 2 o 3 en el marcador de posición de contenido:

Contenido 1 = mostrar el 50% del tiempo
Contenido 2 = mostrar el 25% del tiempo
Contenido 3 = mostrar el 25% del tiempo

Prefiero Javascript, pero si hay una manera más fácil de hacerlo en ASP.NET en la plantilla front-end, no en el código subyacente, también es aceptable. Si tiene una solución o puede señalarme un script existente, se lo agradecería. Gracias!

¿Fue útil?

Solución

Realmente no hay necesidad de multiplicar / floor / ceil: la función Math.random () proporciona un valor mayor o igual a 0 y menor que 1.

El siguiente código sería un poco más fácil de mantener si cambia la cantidad de opciones o el porcentaje de probabilidad.

var contentId, random = Math.random();

if (random < 0.5) {
  // option 1: chance 0.0–0.499...
  contentId = 0;
} else (random < 0.75) {
  // option 2: chance 0.50—0.7499...
  contentId = 1;
} else {
  // option 3: chance 0.75–0.99...
  contentId = 2;
}

loadContent(contentId);

Otros consejos

Para la parte aleatoria del guión, solo tienes que jugar con Math.random Algo feo y codificado se vería así:

var contentToShow = -1;
var NB_MAX = 4;
var myRand = Math.floor(Math.random()*NB_MAX);
if(myRand<1) contentToShow = 1;
else if (myRand<2) contentToShow = 2;
else contentToShow = 3;

Entonces solo tienes que cargar el contenido con ajax.

Un ejemplo en jQuery podría verse así:

var myPlaceHolder = $("#myPlaceHolder")
$.myPlaceHolder.load("/mycontents/mycontent_" + contentToShow + ".asp");

Pero usar la solicitud ajax en una carga de página no es la forma de hacerlo. (Solicitud de 2 servidores en lugar de 1 si el servidor maneja el contenido aleatorio)

Aquí hay un truco rápido, probablemente haya una mejor manera.

var randomnumber=Math.floor(Math.random()*4)
if((num==0) || (num==1)) {
//show hidden div or document.write (50% probability)
} else if (num==2) {
//show hidden div or document.write (25% probability)
} else {
//show hidden div or document.write (25% probability)
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top