2012-12-06 139 views
1

我想提供一個約40個正數的列表,然後讓我的主頁顯示第一個數字。然後在午夜,該號碼將變爲列表中的下一個號碼。當列表結束時,輪換開始。因此,例如,用戶今天多次前往我的頁面並看到列表中的第一個數字。然後說,凌晨1點,他們回到頁面,看到名單上的下一個數字,並將這樣做,直到明天晚上的午夜...等等等等等這是可能的嗎?每24小時更換一次號碼

我試過幾個不同的javascripts,根據我的列表確實改變了數字,但當用戶轉到頁面時,它再次啓動列表。

我對此很新,我不知道你可能需要我的代碼的哪一部分,因爲我一直在嘗試做它應該做的事情......只是不是我想要它做什麼。

我有道理嗎?

不幸的是,我無法在這個網頁上使用php。

+2

您需要存儲您要達到的數量。對於每個用戶,你需要做後端。對於單個用戶,你需要存儲一個cookie(或localstorage) – Andy

+3

你需要一個比javascript更持久的狀態。服務器端技術將更適合於此,最好與某種數據庫結合使用。 –

+0

你想要隨機數還是使用某些數字的列表?我想你可以使用一個使用當前日期的數組來創建一個數字列表,直到第二天,所有用戶都是一樣的。 – Constanta

回答

1

定義的開始日期(最好是在過去的),計算出今天的日期,兩者相減,然後用模把它擠入數的範圍要顯示:

var minDate = 15681, // days since 1-1-1970 
nowDate = Math.ceil(new Date().getTime()/1000/86400), 
numbers = [1, 5, 1234, 6543, 1236456]; 

// get the number for today 
console.log(numbers[(nowDate - minDate) % numbers.length]); 

如果啓動日期不要緊,可以簡化表達式:

numbers[Math.ceil(new Date().getTime()/86400000) % numbers.length]; 

順便說一句,這不會在午夜更改爲大家順便說一句,因爲.getTime()給GMT時間。

+0

非常感謝。我會試試這個,回頭看看對我有用的東西。 – flipper828

+0

在研究了上面的代碼後,我幾乎清楚它的工作原理。所以我想嘗試一下測試。我複製了代碼,粘貼到文檔的頭部。但我很困惑我需要將哪些內容放入要顯示數字的文檔正文中。 我會粘貼一些代碼,但我不知道如何隔離它,所以它會正確顯示。如果你沒有猜到,我是一個真正的新手! – flipper828

1

您可以使用new Date().getTime()獲取當前時間(以毫秒爲單位)。如果您將其轉換爲天數並向下舍入,您可以找到自紀元以來的天數。取模的模數,並用它來獲得你的數組數組的索引。由於您始終使用當前時間(根據用戶),因此您無需存儲任何Cookie或服務器端計數器。

var nums = [1,1,2,3,5,8,13]; // and so on 
    d = new Date(), // today 
    days = d.getTime()/(1000*60*60*24), 
    idx = Math.floor(days) % nums.length; 
alert(nums[idx]); // should change once a day 
+0

非常感謝。我現在要試試看。 – flipper828