Frage

Ich muss in der Lage, Inhalte in einem Platzhalter div auf Prozentsatz wie diese Basis zu drehen. Die Rotation wird beim Laden der Seite auftreten. Also jedes Mal neu geladen ein Nutzer eine Seite er diese Chancen hat den Inhalt zu sehen, 1, 2 oder 3 in dem Inhalt Platzhalter:

Inhalt 1 = zeigen 50% der Zeit
Inhalt 2 = zeigen 25% der Zeit
Inhalt 3 = zeigen 25% der Zeit

Ich ziehe Javascript, aber wenn es ein einfacherer Weg, ist es in ASP.NET auf der Front-End-Vorlage nicht das Code-Behind zu tun, das ist auch akzeptabel. Wenn Sie eine Lösung haben oder mich zu einem vorhandenen Skript zeigen kann, würde ich es zu schätzen wissen. Dank!

War es hilfreich?

Lösung

Es gibt wirklich keine Notwendigkeit / Boden / ceil etwas zu multiplizieren. Die Math.random() Funktion gibt Wert, der größer als oder gleich 0 und kleiner als 1

Der folgende Code wäre ein bisschen leichter zu pflegen, wenn Sie die Anzahl der Optionen oder die Möglichkeit Prozentsatz ändern.

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

Andere Tipps

Für den zufälligen Teil des Skripts, müssen Sie nur noch mit Math.random spielen Etwas hässlich und hartkodierte würde wie folgt aussehen:

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;

Dann müssen Sie nur noch den Inhalt mit Ajax laden.

Ein exemple in jQuery könnte wie folgt aussehen:

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

Aber mit Ajax-Anforderung auf einer Seite zu laden, ist nicht die Art und Weise imo zu gehen. (2 Serveranforderung anstelle von 1, wenn der Zufall Inhalt von dem Server gehandhabt wird)

Hier ist eine schnelle Hack, gibt es wahrscheinlich einen besseren Weg.

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)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top