我想提供一个大约40个正数的列表,然后让我的主页显示第一个数字。然后在午夜,号码将变为列表中的下一个号码。在列表的末尾,旋转重新开始。因此,例如,用户今天多次访问我的页面并查看列表中的第一个数字。然后说凌晨1点,他们回到页面,看到列表上的下一个号码,明天晚上才会这样做......等等等这可能吗?
我尝试了几种不同的javascripts根据我的列表改变了数量但是当用户进入页面时,它再次启动列表。
我对此很陌生,我不知道你可能需要我的代码的哪一部分,因为我一直在尝试做它应该做的事情......而不是我想要它做什么。
我有道理吗?
不幸的是,我无法在这个网页上使用php。
答案 0 :(得分: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时间。
答案 1 :(得分: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