每三周旋转一次元素

时间:2013-05-11 00:55:25

标签: javascript date asp-classic

我正在寻找经典的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日重置这个,我宁愿继续滚动。

谢谢, 莫林

1 个答案:

答案 0 :(得分:1)

为什么不设定基准日期,而不是制定一年中的每周,然后检查自那天起经过的周数。然后你可以使用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