好的,所以我一直在为这个问题敲打一段时间(几个月)。但我似乎无法找到一个简单的解决方案,用Javascript创建日历,允许我动态添加事件并支持多日活动。
我的第一种方法是使用带有年 - 月 - 日相关ID的div,这样我就可以轻松添加事件,这里的问题是没有办法支持多日事件,但是添加单日事件很容易。
我最近的方法是剖析谷歌日历,他们显然使用表格,这是一个很好的解决方案,因为它很容易支持多天事件块(使用colspan),但是在表格上添加/渲染事件似乎完全是不同的壮举,因为我不能简单地将它们添加到列/单元块中。我必须生成一个新行,然后如果它是一个推动事件的多日事件,我将不得不重新渲染日历的那些部分。 以下是我目前正在进行的“动态”方法的链接:https://r3dux.com/css/caldyn.php
这是一个静态版本,用于显示事件的内容:https://r3dux.com/css/cal.php
我不想使用任何类型的第三方日历。我想用纯Javascript,NO Jquery或其他框架来做这件事。
如果您可以简单地给我一些建议或不同的方法来解决这个问题,那将非常有用。
基本要求是它具有多日活动支持,可以调整为“周”视图(仅显示当前和下周),并允许我显示每天的个人开始/结束时间事件。我还需要以某种方式支持在夏令时和标准时间内安排事件。比如,如果它当前是DST并且计划将来是STD时的事件,我希望用户在DST期间选择的时间是事件被安排的时间,因此时间不会改变切换发生的时间。
答案 0 :(得分:2)
首先,我会考虑重构renderCalendar
函数 - 它是巨大的!使用该代码可以很容易地想象,更不用说实现多日活动了。
我根据一些旧的,未完成的代码创建了一个fiddle(其目标是创建类似Google的日历),这可能会作为如何执行此操作的建议。它离你想要的东西很远,但也许你可以从中得出一些想法。
它是在没有任何第三方库的情况下编写的,但它需要一个新的浏览器。 map
,some
等功能可以轻松polyfilled。
Calendar
,Day
和Event
原型可以避免使用大量方法。我可以,例如删除渲染方法中的逻辑,以完全遵循MVC模式,从而简化开发。
要动态添加活动,请将Event
推送至Calendar.events
并致电Calendar.render()
。它已经"支持"多日活动和单项活动,但绝对需要一些工作。