Question

Je dois pouvoir faire pivoter le contenu dans une division fictive en fonction d'un pourcentage comme celui-ci. La rotation aura lieu au chargement de la page. Ainsi, chaque fois qu'un utilisateur recharge une page, il a la possibilité de voir le contenu 1, 2 ou 3 dans l'espace réservé au contenu:

Contenu 1 = montrer 50% du temps
Contenu 2 = afficher 25% du temps
Contenu 3 = afficher 25% du temps

Je préfère le langage Javascript, mais s’il existe un moyen plus simple de le faire dans ASP.NET sur le modèle frontal, et non pas sur codebehind, c’est également acceptable. Si vous avez une solution ou pouvez me signaler un script existant, je vous en serais reconnaissant. Merci!

Était-ce utile?

La solution

Il n’est vraiment pas nécessaire de multiplier / étage / plafond: la fonction Math.random () donne une valeur supérieure ou égale à 0 et inférieure à 1.

Le code suivant serait un peu plus facile à gérer si vous modifiez le nombre d'options ou le pourcentage de chance.

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);

Autres conseils

Pour la partie aléatoire du script, il vous suffit de jouer avec Math.random Quelque chose de moche et de codé en dur pourrait ressembler à ceci:

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;

Ensuite, il vous suffit de charger le contenu avec ajax.

Un exemple dans jQuery pourrait ressembler à:

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

Mais utiliser une requête ajax lors du chargement d'une page n'est pas la solution idéale. (2 demandes de serveur au lieu de 1 si le contenu aléatoire est géré par le serveur)

Voici un petit hack, il y a probablement un meilleur moyen.

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)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top