每三周旋转一次元素

Rotate element every three weeks

本文关键字:元素 一次 三周 旋转      更新时间:2023-09-26

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

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

  • 第一周:显示A
  • 第二周:显示B
  • 第三周:显示C
  • 第四周:显示A
  • 第五周:显示B
  • 第六周:显示C

我想我可以做两个数组,一个像$Weeks[1,2,4,5,6,7,8…]$DISPLAY [A,B,C,A,B,C,A,B…]C],都有52项,抓取当前周并确保第二个数组的计数与第一个数组匹配,但想知道是否有更有效的方法?而且,我必须在1月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