在Javascript中排列日历事件列表并添加月份名称
我有一个HTML格式的事件列表:在Javascript中排列日历事件列表并添加月份名称,javascript,jquery,html,Javascript,Jquery,Html,我有一个HTML格式的事件列表: <ol id="my-list"> <li data-start="01-Jan-2019">Event on 01-Jan-2019</li> <li data-start="25-Dec-2018">Event on 25-Dec-2018</li> <li data-start="14-Feb-2018">Event on 14-Feb-2018</li>
<ol id="my-list">
<li data-start="01-Jan-2019">Event on 01-Jan-2019</li>
<li data-start="25-Dec-2018">Event on 25-Dec-2018</li>
<li data-start="14-Feb-2018">Event on 14-Feb-2018</li>
<li data-start="14-Jul-2019">Event on 14-Jul-2019</li>
<li data-start="31-Oct-2019">Event on 31-Oct-2019</li>
<li data-start="13-Oct-2019">Event on 13-Oct-2019</li>
<li data-start="26-Oct-2016">Event on 26-Oct-2016</li>
<li data-start="02-Dec-2018">Event on 02-Dec-2018</li>
<li data-start="21-Dec-2018">Event on 21-Dec-2018</li>
<li data-start="18-Dec-2018">Event on 18-Dec-2018</li>
</ol>
2019年1月1日的事件
2018年12月25日的事件
2018年2月14日的事件
2019年7月14日的事件
2019年10月31日的事件
2019年10月13日的事件
2016年10月26日的事件
2018年12月2日的事件
2018年12月21日的事件
2018年12月18日的事件
如何将列表修改为:
<ol id="my-list">
<span>October</span>
<li data-start="01-Jan-2019">Event on 26-Oct-2016</li>
<span>February</span>
<li data-start="25-Dec-2018">Event on 14-Feb-2018</li>
<span>December</span>
<li data-start="14-Feb-2018">Event on 02-Dec-2018</li>
<li data-start="14-Jul-2019">Event on 18-Dec-2018</li>
<li data-start="31-Oct-2019">Event on 21-Dec-2018</li>
<li data-start="13-Oct-2019">Event on 25-Dec-2018</li>
<span>January</span>
<li data-start="26-Oct-2016">Event on 01-Jan-2019</li>
<span>July</span>
<li data-start="02-Dec-2018">Event on 14-Jul-2019</li>
<span>October</span>
<li data-start="21-Dec-2018">Event on 13-Oct-2019</li>
<li data-start="18-Dec-2018">Event on 31-Oct-2019</li>
</ol>
十月
2016年10月26日的事件
二月
2018年2月14日的事件
十二月
2018年12月2日的事件
2018年12月18日的事件
2018年12月21日的事件
2018年12月25日的事件
一月
2019年1月1日的事件
七月
2019年7月14日的事件
十月
2019年10月13日的事件
2019年10月31日的事件
我还可以使用jQuery
更具体地说,我需要比较每个日期,看看月份是否发生了变化,如果发生了变化,请添加正确的月份名称
首先,我对事件进行了排序(来源):
var-container=$(“#我的列表”);
var项目=$(“#我的列表li”);
项。每个(函数(){
//将“数据开始”属性中的字符串转换为更多
//标准化日期格式
var BCDate=$(this.attr(“数据开始”).split(“-”);
var standardDate=BCDate[1]+“”+BCDate[0]+“”+BCDate[2];
standardDate=新日期(standardDate).getTime();
$(this).attr(“数据开始”,standardDate);
log($(this.attr(“数据开始”,standardDate));
});
项目.排序(功能(a,b){
a=parseFloat($(a).attr(“数据开始”);
b=parseFloat($(b).attr(“数据开始”);
返回ab?1:0;
}).each(函数({
容器。附加(此);
});
然后,我想将每个事件月份的名称与其前一个事件月份的名称进行比较,并仅在该月份发生变化时插入该月份的名称。将每个事件月份与前一个事件月份进行比较,如果不同,则将其名称附加到列表项之前:
items.each(function(i) {
var a1 = new Date($(this).data('start'));
var b1 = new Date($(this).prev().data('start'));
if (a1.getMonth() != b1.getMonth()) {
$(this).before("<span>" + defineMonth(a1.getMonth()) + "</span>");
}
});
张贴的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并获取@CertainPerformance在这种特定情况下,我要查找的是逻辑,而不是代码。更具体地说,我不知道从哪里开始。当你有一个编程目标时,首先要开始写一些代码——把问题分解成块,解决每个块,把它们放在一起。那么,代码编写服务不是为你自己没有尝试过的时候提供的吗?好吧,让我来介绍一下我的方法。是的,回答你自己的问题是允许的,但一般来说,你应该发布一个关于对未来访问者有价值的东西的问题+自我回答,而不是一个本地化的个人调试问题。(另外,
s不应是
s的子级)
items.each(function(i) {
var a1 = new Date($(this).data('start'));
var b1 = new Date($(this).prev().data('start'));
if (a1.getMonth() != b1.getMonth()) {
$(this).before("<span>" + defineMonth(a1.getMonth()) + "</span>");
}
});
function defineMonth(evt) {
var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
var n = month[evt];
return n;
}