2016-09-28 9 views
0

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> 
+1

「機能していません」...これはかなり曖昧な説明です。何が起こるのか、そして何が起こるのかを詳細に説明します(必要に応じて例があります)。 – ADyson

+0

このタイプの出力は完璧な出力ですが、インデックス0と1のカレンダー表示を修正しても、イベントの[]カレンダー内にループを使用すると表示されません。私はイベント[]内に配列3を入れてもカレンダーも表示されません –

+0

コメントにコードの大きなビットを置かないで、質問を編集してください、それは読むのは非常に難しいです! – ADyson

答えて

0

FullCalendarによると、「イベント」プロパティは、配列、関数、または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); 
    } 
}); 

P.S.これは、この特定の問題の最も簡単な解決策ですが、個人的にはPHPから返されたものをサーバーから制御できる場合は、fullCalendarで必要な正しい形式のイベントを返すようにします。このようなクライアント側。そのように管理するほうがずっと簡単です(私の意見では)。たとえば、クライアント側には、

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

のように書くことができます。そして、すでに$calendarEvents配列内のオブジェクトに正しい情報を挿入するようにPHPを変更したでしょう。

+0

これは完璧なソリューションです...感謝...しかし、 ? start:js_array [i] + 'T' + js_array1 [i]、正しい方法かどうか...? –

+0

データのフォーマットが正しいと仮定して、あなたの現在のコードを解決する方法を教えてください。あなたがそれを受け入れることを忘れないでください、もしかしたらアップヴォートを受け入れることを忘れないでください。 – ADyson

+0

私は試してみましたが、それは動作しておらず、カレンダーは表示されません。js_array [i] + 'T12:30: 00 'でもまだカレンダーが消えていません。実際に何が起こったのかはわかりません –

関連する問題