Domanda

Devo essere in grado di ruotare il contenuto all'interno di un div segnaposto in base a una percentuale come questa. La rotazione avverrà al caricamento della pagina. Quindi ogni volta che un utente ricarica una pagina ha queste possibilità di vedere il contenuto 1, 2 o 3 nel segnaposto del contenuto:

Contenuto 1 = mostra il 50% delle volte
Contenuto 2 = mostra il 25% delle volte
Contenuto 3 = mostra il 25% delle volte

Preferisco Javascript, ma se esiste un modo più semplice per farlo in ASP.NET sul modello front-end, non sul codebehind, anche questo è accettabile. Se hai una soluzione o puoi indicarmi uno script esistente, lo apprezzerei. Grazie!

È stato utile?

Soluzione

Non c'è davvero bisogno di moltiplicare / floor / ceil nulla: la funzione Math.random () fornisce un valore maggiore o uguale a 0 e inferiore a 1.

Il seguente codice sarebbe un po 'più semplice da mantenere se si modifica il numero di opzioni o la percentuale di probabilità.

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

Altri suggerimenti

Per la parte casuale dello script, devi solo giocare con Math.random Qualcosa di brutto e codificato sarebbe simile a questo:

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;

Quindi devi solo caricare il contenuto con ajax.

Un esempio in jQuery potrebbe apparire come:

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

Ma usare la richiesta Ajax al caricamento di una pagina non è la strada da percorrere. (2 richieste del server anziché 1 se il contenuto casuale è gestito dal server)

Ecco un trucco rapido, probabilmente c'è un modo migliore.

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)
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top