割合に基づくJavaScriptコンテンツのローテーション
-
06-07-2019 - |
質問
このような割合に基づいて、プレースホルダーdiv内のコンテンツを回転できる必要があります。ページの読み込み時に回転が発生します。したがって、ユーザーがページをリロードするたびに、コンテンツプレースホルダーにコンテンツ1、2、または3が表示される可能性があります。
コンテンツ1 =時間の50%を表示
コンテンツ2 =時間の25%を表示
コンテンツ3 =時間の25%を表示
Javascriptの方が好きですが、ASP.NETでコードビハインドではなくフロントエンドテンプレートで簡単に実行できる方法があれば、それも受け入れられます。解決策がある場合、または既存のスクリプトを参照できる場合は、感謝します。ありがとう!
解決
実際に何も掛けたり、床を空けたりする必要はありません。 Math.random()
関数は、0以上1未満の値を提供します。
次のコードは、オプションの数またはチャンスの割合を変更すると、メンテナンスが少し簡単になります。
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);
他のヒント
スクリプトのランダム部分については、Math.randomで遊ぶ必要があります。 いハードコーディングされたものは次のようになります。
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;
次に、ajaxでコンテンツをロードする必要があります。
jQueryの例は次のようになります。
var myPlaceHolder = $("#myPlaceHolder")
$.myPlaceHolder.load("/mycontents/mycontent_" + contentToShow + ".asp");
しかし、ページの読み込み時にajaxリクエストを使用することは、goに行く方法ではありません。 (ランダムコンテンツがサーバーによって処理される場合、1ではなく2つのサーバーリクエスト)
こちらは簡単なハックです。おそらくもっと良い方法があります。
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)
}
所属していません StackOverflow