javascript - 单击右箭头生成下一个日期序列
问题描述
我想通过点击右箭头来获得接下来的 7 个日期序列。我不确定如何引用我的 li 元素。我尝试使用这个和 li.append 但它们都不适合我。
$('.rightarrow').on('click', function() {
var y = 1;
var currentDateCGH = new Date();
var date = currentDateCGH.getDate() + 7;
var monthArr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var currMonth = monthArr[currentDateCGH.getMonth()];
var currYear = currentDateCGH.getFullYear();
$(".dateslots li:empty").each(function() {
//$('<li>').append((date + y)+"-"+currMonth);
//$(this).text((date + y)+"-"+currMonth);
y++;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="dateslots">
<li class="leftarrow"> </li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="rightarrow"> </li>
</ul>
解决方案
li:empty
只会在第一次通过,因为这些元素在每次后续执行时都不会为空。因此,您需要更加明确地选择元素。我喜欢先做最简单的事情(只需选择所有li
元素并只对您想要的元素进行操作)。对于不同的类应用程序,这个选择可以更具体,但现在,以下就足够了。
$(".dateslots li").each(function(){
// convert our element into a jquery element
var $li = $(this);
// ignore the arrows
if ($li.hasClass('leftarrow') || $li.hasClass('rightarrow')) {
return;
}
// for every other one, we want to add some value to our date
// this value happens to be the same number as any element's previous number of siblings
// no need for a y counter
$li.text((date + $li.prevAll().length)+"-"+currMonth);
});
有关该prevAll
功能的更多信息,请参见此处
您在此函数之前有一些逻辑问题,其中无论您单击右箭头多少次,它只会向您显示接下来的 7 天,但这应该解决您修改与您构造的日期值相关的 li 元素的问题。
推荐阅读
- node.js - NodeRed 崩溃:TypeError:binary is not a function at Process.ChildProcess._handle.onexit
- amazon-web-services - AWS Amplify with React Native:凭证的范围应为有效区域,而不是 us-east-1
- activerecord - Yii2如何在活动记录中使用内置的mysql功能
- .htaccess - 将两个域指向相同的 IP htaccess 编辑
- variables - 同时初始化两个不同的随机变量
- python - Python 3.x function:Converting string to list and printing output which excludes certain characters
- tensorflow - tf.Variable 如何维护图的状态?
- ruby-on-rails - 导轨。用于设计的 2 个用户模型的路由问题
- amazon-dynamodb - Dynamo 主分区键
- ios - Swift - 屏幕更新后 - UIView 到 UIImage 的转换