0

我正在为此寻找经典的 asp 或 javascript 解决方案:

我们希望网页上的内容每三周轮换一次。

  • 第一周:展示 A
  • 第二周:展示 B
  • 第三周:展示 C
  • 第四周:展示 A
  • 第五周:展示 B
  • 第六周:展示 C
  • 等等..

我想我可以做两个数组,一个像 $Weeks [1,2,4,5,6,7,8... 52] 另一个像 $DISPLAY [A,B,C,A,B,C,A ,B... C],两者都有 52 个项目,获取当前周并确保第二个数组的计数与第一个匹配,但想知道是否有更有效的方法?另外,我必须在 1 月 1 日重新设置它,我宁愿它继续滚动。

谢谢,莫琳

4

1 回答 1

2

与其制定一年中的每个星期,不如设置一个基线日期,然后检查从那一天起已经过去了多少周。然后您可以使用 numberOfWeeks mod numberOfChoices:

var baselineSunday = new Date();
//Jan. is 0, Feb. is 1, etc.
baselineSunday.setMonth(4);
baselineSunday.setDate(5);
baselineSunday.setFullYear(2013);

var currentDate = new Date();

var diffInWeeks = GetDifferenceInWeeks(baselineSunday, currentDate);

var choices = ["A", "B", "C"];

var choiceForThisWeek = choices[diffInWeeks % choices.length];
console.log(choiceForThisWeek);

function GetDifferenceInWeeks(week1, week2) {
  var diffInMs = currentDate - baselineSunday;

  var msPerDay = (1000*60*60*24);
  var diffInDays = Math.floor(diffInMs/msPerDay);

  var diffInWeeks = Math.floor(diffInDays/7);
  return diffInWeeks;
}

由于周数差异仅基于自基准日期以来的毫秒数,因此轮换将持续到下个月、下一年及以后。

JSFiddle

于 2013-05-11T01:20:25.700 回答