Rotazione del contenuto Javascript in base alla percentuale
-
06-07-2019 - |
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!
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)
}