Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中排列日历事件列表并添加月份名称_Javascript_Jquery_Html - Fatal编程技术网

在Javascript中排列日历事件列表并添加月份名称

在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>

我有一个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>
  <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;
    }