【问题标题】:i was trying to set my event dynamic but its not working我试图设置我的活动动态,但它不起作用
【发布时间】:2016-09-28 13:20:10
【问题描述】:

如何在事件数组中获取事件如果给 js_array 提供修复索引它的工作但是当我尝试通过 for 循环它不工作时我会做什么。当我在数组中推送 var 并且它在数组中的打印时它也不起作用。

如何动态设置我的事件并在这个数组中设置我为此做什么

这是我正在做的示例。

<script>
var js_array = new Array();
$(document).ready(function() {
var js_array =<?php echo json_encode($date);?>;
var js_array1 =<?php echo json_encode($time);?>;
var js_arr = js_array.length;

for (var i = 0; i < js_arr; i++) {
var evn ="{ title: All Day Event, start: "+js_array[i]+" },";
var array3 = new Array;
array3.push(evn);
var test = array3.toString();
console.log(test);
//alert(test);
}


$('#calendar').fullCalendar({
defaultDate: '2016-09-01',
editable: true,
eventLimit: true, // allow "more" link when too many events
events: [
//for (var i = 0; i < js_arr; i++) {
{
title: 'Appoinment',
start: js_array[0]
},
//}
{
title: 'Long Event',
start: js_array[1]
},
{
id: 999,
title: 'Repeating Event',
start: '2016-09-1216:00:00'
},
{

title: 'Repeating Event',
start: '2016-09-1216:00:00'
},
{
id: 999,
title: 'Repeating Event',
start: '2016-09-12T16:00:00'
},
{
title: 'Conference',
start: '2016-09-12',
end: '2016-09-13'
},
{
title: 'Conference',
start: '2016-09-12',
end: '2016-09-13'
},
{
title: 'Meeting',
start: '2016-09-12T10:30:00',
end: '2016-09-12T12:30:00'
},
{
title: 'Click for any link',
url: 'http://google.com/',
start: '2016-09-28'
}
]
//events: [test]
});

});

</script>

【问题讨论】:

  • “不工作”......这是一个相当模糊的描述。详细解释(必要时提供示例)您预期会发生什么,以及实际会发生什么。
  • 我想要这种类型的输出,它是完美的输出,当我将修复索引 0 和 1 日历显示时,但是当我在事件中使用 for 循环时 [] 日历不显示。当我将 array3 放入 events[] 日历时也不会显示
  • 请编辑问题,不要在 cmets 中放大量代码,很难阅读!
  • 这段代码正在工作并且日历显示,但是当我开始 for 循环并删除 0 和 1 索引以及静态日期时,日历不显示

标签: javascript php jquery html codeigniter


【解决方案1】:

根据 FullCalendar,“events”属性必须是数组、函数或返回 JSON 对象的 URL。

您的原始代码(对于其他阅读者,请参阅编辑历史记录)试图在数组声明中运行 for 循环。那是完全无效的JS。我应该认为您在浏览器中遇到了控制台错误,尽管您没有提及。

您需要将此循环包含在一个函数中,然后从该函数返回事件数组(根据https://fullcalendar.io/docs/event_data/events_function/):

$('#calendar').fullCalendar({
    defaultDate: '2016-09-01',
    editable: true,
    eventLimit: true, // allow "more" link when too many events
    events: function(start, end, timezone, callback) {
      var event_arr = [];
      for (var i = 0; i < js_array.length; i++) {
         event_arr.push({ 
           title: 'Appointment', 
           start: js_array[i]
           //add any other properties here as required, e.g. end date/time
         });
      }
      callback(event_arr);
    }
});

附:这是针对这个特定问题的最简单的解决方案,但就个人而言,如果您可以控制 PHP 从服务器返回的内容,我会让它以 fullCalendar 所需的正确格式返回一组事件,而不是在像这样的客户端。以这种方式管理它会容易得多(在我看来)。例如,你可以写如下内容:

events: <?php echo json_encode($calendarEvents);?>

在客户端。而且您已经更改了 PHP 以将正确的信息插入到 $calendarEvents 数组中的对象中。

【讨论】:

  • 这是完美的解决方案..谢谢...但是我应该如何处理与日期相同的时间..? start: js_array[i]+'T'+js_array1[i],这样对不对...?
  • 是的,假设数据格式正确,您当前的代码将是解决它的方法。顺便说一句,如果答案对您有所帮助,请不要忘记接受和/或投票 - 谢谢:-)
  • 我试过了,但它不起作用,日历不显示然后我会尝试 js_array[i]+'T12:30:00' 但它仍然不起作用日历消失我不知道实际发生了什么.如何解决这个问题
  • 在浏览器控制台 (F12) 中是否出现任何错误?
  • 只是给我警告......弃用警告:时刻构造回退到 js 日期。
猜你喜欢
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2015-05-05
  • 2013-05-31
相关资源
最近更新 更多