每三周旋转一次元素
Rotate element every three weeks
我正在寻找一个经典的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
相关文章:
- 当元素可见时,jQuery滚动函数会触发一次
- 使用 JavaScript 一次为一个元素设置多个属性
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 创建一次角度元素
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 对同一类中的所有元素单击一次
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 元素在JavaScript函数中只更改过一次
- 我试图用jQuery让每个HTML5元素一次淡出一个
- 仅追加元素一次
- 如何使用 Jquery 获取 XML 文件,并在每次加载时以随机顺序显示元素一次
- jQuery fadeIn 元素一次一个 onClick
- 如何仅访问数组中的一对元素一次
- 哪个更具性能:同时调用array.prototype.push和所有元素,或者推送每个元素一次
- 在页面加载后计数元素一次
- 如何循环遍历一组jQuery元素—一次4个
- 渲染全局元素一次
- 仅在鼠标左键后显示元素一次
- 同一块元素一次显示一个,并可验证命名
- 仅将键:值对附加到我的数组元素一次