如何修改现有JS脚本实现table-responsive容器按星期数自动横向滚动
问题修复方案
原有代码存在以下三处核心错误:
- 你声明的
d是Date类型实例,无法直接和字符串格式的星期名称做相等判断,判断逻辑永远不会触发 - 存在重复的判断分支,首个
if和首个else if都匹配的是周二(martedì),属于冗余代码,且缺失周一的匹配逻辑 - JS原生
Date.getDay()方法返回的星期索引规则为:0对应周日,1对应周一,和你定义的星期数组索引0对应周一的规则不匹配,需要做偏移处理
修正后的完整代码
var d = new Date(); // 对齐自定义星期数组的索引规则:原生返回0对应周日,偏移处理后0对应周一,6对应周日 var weekIndex = d.getDay() - 1; weekIndex = weekIndex < 0 ? 6 : weekIndex; var weekday = new Array(7); weekday[0] = "lunedì"; weekday[1] = "martedì"; weekday[2] = "mercoledì"; weekday[3] = "giovedì"; weekday[4] = "venerdì"; weekday[5] = "sabato"; weekday[6] = "domenica"; // 按索引顺序对应周一到周日的滚动偏移量,直接匹配无需多分支判断 var scrollOffset = [300, 300, 450, 600, 750, 900, 150][weekIndex]; $(".table-responsive").scrollLeft(scrollOffset);
逻辑说明
- 先对原生星期索引做偏移处理,对齐你自定义的星期数组规则
- 用数组索引直接匹配对应滚动距离,替代冗余的多分支判断,后续修改偏移值也更方便
- 如果你不需要用到星期名称变量,也可以直接删除
weekday相关的代码,只保留索引和滚动偏移的匹配逻辑即可
内容的提问来源于stack exchange,提问作者jacopo silvestri
相关产品推荐
相关产品推荐

