javascript - fullcalendar:如何添加每天所有事件的总持续时间

标签 javascript jquery fullcalendar

我注意到这个问题被问过几次,但没有实际的正确答案或良好的反馈来指引正确的道路。

我正在使用 fullcalendar javascript 插件并尝试添加每天多个事件的总小时数,然后我将在每天的页眉或页脚中显示总和。

我尝试了很多不同的方法来实现这一点,但我得到的最接近结果的是这段代码:

eventAfterRender: function(event, element, view) {

            if (event.totalhrs > 0) {
                var sd = event.startdate;

                if (dateTotal.hasOwnProperty(sd)) {
                    dateTotal[event.startdate] = (dateTotal[event.startdate] + +event.totalhrs);
                } else {
                    dateTotal[event.startdate] = +(event.totalhrs);
                }

                $(".fc-day-top[data-date='"+event.startdate+"']").find('.fc-dailytotal').text(dateTotal[event.startdate]);
            }

        }

这在第一次呈现日历时有效,但如果有事件更改,它会继续添加总数,错误地显示非常高的值。我理解为什么它添加的总数不正确 (dateTotal[event.startdate]++event.totalhrs) 但我希望有人能帮助我指引正确的方向以完成正确的结果。

感谢任何反馈/帮助。

最佳答案

我想出了一种替代方法来完成这项工作,而无需使用日期数组保存每一天的总和。我希望这对像我一样一直在搜索的任何人有所帮助。

请记住,此示例仅适用于月 View ...需要进行一些调整才能使其适用于周/日 View 。

此外,该事件必须有一个总时数对象,用于对总数求和。您将在下面看到它作为 event.totalhrs

viewRender: function(view, element) {
  $.each($(".fc-day-top"), function(key, val) {
    var dateYMD = $(this).attr("data-date");
    $(this).append("<div class='fc-dailytotal' id='dailytotal-"+dateYMD+"'></div>");
  });
},

eventRender: function(event, element, view) {
    $(".fc-dailytotal").text(0); //Clear total sum
},

eventAfterRender: function(event, element, view) {
    var currentday = moment(event.start).format("YYYY-MM-DD");

    if (event.totalhrs > 0) {
      var prev = $("#dailytotal-"+currentday).text() || 0;
      $("#dailytotal-"+currentday).text(+prev + +event.totalhrs);
    }
}

您也可以使用此方法计算每周总计。

关于javascript - fullcalendar:如何添加每天所有事件的总持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700330/

相关文章:

javascript - 使用json数据打开新页面而不刷新页面

javascript - jquery ui css 和image 文件在不同的文件夹中,如何配置?

javascript - 根据用户选择更新下拉菜单值

angularjs - Angular-UI-日历类型错误 : Cannot read property 'length' of undefined

javascript - fullcalendar:删除最后一个事件后的空格

jquery - FullCalendar 无法正确加载正文

javascript - 未捕获的异常发送统计信息

javascript - 在 JavaScript 中验证

jquery - 使用 jquery 更改 Bootstrap 类的类名

jquery - 如何制作滑动效果-JQuery Slider