JavaScript实现按整周切换Week 1/Week 2文本的问题
嘿,我来帮你搞定这个文本切换的需求!下面给你两种可行的实现方案,你可以根据自己的实际场景选择:
方案一:基于指定切换日期的整周固定显示
如果需要严格按照你设定的日期节点来切换文本,并且整周保持不变,咱们可以通过定义切换日期数组,判断当前日期落在哪个区间来实现。
实现代码&说明
// 1. 定义切换日期数组(注意:JS月份是从0开始的,所以4月要写3) const switchDates = [ new Date(2024, 3, 16), // 4月16日(切换为Week 1的起始日) new Date(2024, 3, 23), // 4月23日(切换为Week 2的起始日) new Date(2024, 3, 30), // 4月30日(切换为Week 1的起始日) // 可以继续添加后续的切换日期 ]; // 2. 处理当前日期:清零时分秒,避免当天时间影响判断 var todaysdate = new Date(); todaysdate.setHours(0, 0, 0, 0); // 3. 给切换日期排序,并添加初始边界(最早日期前默认显示Week 1) switchDates.sort((a, b) => a - b); switchDates.unshift(new Date(1970, 0, 1)); // 添加一个极早的初始日期 // 4. 判断当前日期所在区间,确定显示文本 let displayText = "Week 1"; for (let i = 0; i < switchDates.length - 1; i++) { const intervalStart = switchDates[i]; const intervalEnd = switchDates[i + 1]; // 当前日期落在[intervalStart, intervalEnd)区间内时,根据索引奇偶切换文本 if (todaysdate >= intervalStart && todaysdate < intervalEnd) { displayText = i % 2 === 0 ? "Week 1" : "Week 2"; break; } } // 把结果应用到你需要的地方,比如DOM元素 // document.getElementById('weekText').textContent = displayText; console.log(displayText);
比如你说的4月16日周一到23日周一期间,这段代码会稳定显示Week 1,直到23日当天自动切换为Week 2。
方案二:每周日自动切换,保持至下周日
如果指定切换日期的方案维护起来麻烦,自动每周日切换会更省心。咱们可以通过计算当前日期与基准周日的周数差,用奇偶性来控制文本。
实现代码&说明
var todaysdate = new Date(); todaysdate.setHours(0, 0, 0, 0); // 可选:设置第一个显示Week 1的基准周日,比如4月14日 const baseSunday = new Date(2024, 3, 14); // 计算当前日期到基准日的天数差 const dayDiff = Math.floor((todaysdate - baseSunday) / (1000 * 60 * 60 * 24)); // 计算经过了多少个完整的周 const weekCount = Math.floor(dayDiff / 7); // 根据周数奇偶切换文本,可根据需求调整奇偶对应关系 let displayText = weekCount % 2 === 0 ? "Week 1" : "Week 2"; // 特殊情况:如果当前日期在基准日之前,默认显示Week 1 if (dayDiff < 0) { displayText = "Week 1"; } // 应用到页面 // document.getElementById('weekText').textContent = displayText; console.log(displayText);
这个方案会在每个周日自动切换文本,并且保持一整周不变,不需要手动维护切换日期数组。
内容的提问来源于stack exchange,提问作者user9657566
相关产品推荐
相关产品推荐

