如何根据日期每月1-5号显示/隐藏li:nth-child(2)元素
问题分析与解决方案
问题1:第一段代码的逻辑错误
你要实现每月1-5日显示第2个列表项,原判断条件if( now <= from || now >= to )会错误地隐藏1日和5日的元素。正确逻辑应该是:当日期小于1或者大于5时隐藏,否则显示。
修正后的第一段代码:
function ShowOnTime(from, to, element){ var a = new Date(); var now = a.getDate(); // 只有日期在from到to之间(包含边界)时显示 if( now < from || now > to ){ $(element).hide(); }else{ $(element).show(); } } $(document).ready(function(){ ShowOnTime(1, 5, "li:nth-child(2)"); // 每月1-5日显示该元素 });
问题2:第二段代码的变量未初始化
第二段代码里var pDate = pDate.getDate();没有先创建Date实例,直接调用getDate()会触发Uncaught TypeError: Cannot read properties of undefined (reading 'getDate')错误,导致代码无法执行。
修正后的第二段代码:
$(document).ready(function() { var pDate = new Date(); // 先初始化Date对象 var day = pDate.getDate(); // 日期大于5时隐藏,否则显示 if (day > 5) { $("li:nth-child(2)").hide(); } else { $("li:nth-child(2)").show(); } });
额外验证点
- 确认页面已正确引入jQuery库,否则
$会报错; - 确认列表结构符合预期,
li:nth-child(2)确实指向目标元素(比如列表是直接的<ul><li>...</li><li>...</li></ul>结构,没有嵌套其他元素干扰选择器)。
内容的提问来源于stack exchange,提问作者Sal Castanedo
相关产品推荐
相关产品推荐

