2

このようなパーセンテージに基づいて、プレースホルダー div 内のコンテンツを回転できるようにする必要があります。ローテーションはページの読み込み時に発生します。したがって、ユーザーがページをリロードするたびに、コンテンツ プレースホルダーにコンテンツ 1、2、または 3 が表示される可能性があります。

コンテンツ 1 = 時間の 50% を表示する
コンテンツ 2 = 時間の 25% を
表示する コンテンツ 3 = 時間の 25% を表示する

私は Javascript を好みますが、コード ビハインドではなく、フロント エンド テンプレートの ASP.NET でそれを行う簡単な方法があれば、それも受け入れられます。解決策がある場合、または既存のスクリプトを教えていただければ幸いです。ありがとう!

4

3 に答える 3

10

実際には、何かを乗算/下限/天井にする必要はありません。この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);
于 2009-06-17T16:21:57.397 に答える
0

これは簡単なハックです。おそらくもっと良い方法があります。

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)
}
于 2009-06-17T16:07:29.083 に答える
0

スクリプトのランダムな部分については、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 リクエストを使用することは、うまくいく方法ではありません。(ランダムなコンテンツがサーバーによって処理される場合、1 つではなく 2 つのサーバー要求)

于 2009-06-17T16:08:37.820 に答える