2009-06-17 16 views
2

我需要能夠根據這樣的百分比來旋轉佔位符div內的內容。旋轉將在頁面加載時發生。所以用戶每次重新加載他看到在內容的佔位符內容1,2或3的這些機會的頁面:基於百分比的Javascript內容輪換

內容1 =顯示時間
含量的50%2 =顯示的時間
25% 內容3 =顯示的時間

我喜歡Javascript支持,但是如果有一個更簡單的方法來做到這一點在ASP.NET的前端模板不是代碼隱藏,這也是可以接受的25%。如果您有解決方案或可以指向我現有的腳本,我將不勝感激。謝謝!

+0

我剛纔說你不能在HTML中旋轉東西,直到我意識到你的意思是在不同的環境中。 – SpliFF 2009-06-17 16:10:59

回答

10

真的不需要乘以/ floor/ceil任何東西: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); 
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) 
} 
+0

如果您使用floor,值將在0到3範圍內,而不是1到4 – 2009-06-17 16:13:27

+0

您是對的,謝謝。 – 2009-06-17 16:34:36

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; 

然後你只需要加載與內容阿賈克斯。

jQuery的個例可能看起來像:

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

但在使用上的頁面加載Ajax請求是不是要走海事組織的方式。 (如果隨機內容由服務器處理,則爲2個服務器請求,而不是1個)

+0

這是正確的實現,但我會同意它需要處理服務器端以獲得更好的結果。 (在加載Ajax內容時可能看起來很尷尬) – 2009-06-17 16:21:29