2017-04-17 63 views
0

在我的項目中,我必須檢查時間表的可用性,以便插入一個應該包含兩個值作爲文本的按鈕。一天從8點開始到18點結束,每天都有會議。我有一個包含當天所有會話的JSON數組,每個會話都有一個開始時間和一個結束時間,所以當我找到任何時間空間時,我想向我的html添加一個按鈕。此按鈕將帶有一些文字(例如:8-> 10),其中onClick方法將帶我到另一個功能。下面是一些代碼,我希望它可以使我的問題更容易理解:與foreach中的下一個元素進行比較javascript

function evenement(id) 
{ 
    $.ajax({ 
     url : "<?php echo site_url('index.php/salle/evenement/')?>/" + id, 
     type: "GET", 
     dataType: "JSON", 
     success : function(data) 
     {  var start_date =8; 
       var end_date =18; 
       var buttons =""; 
      data.forEach(function(element, index, array) 
      { 
       for (var i = start_date; i < end_date; i++) { 
         if (element.date_debut == i) {i=element.date_fin;} 
         if (element.date_debut != i) {buttons +="<button>"+i+"->"+element[index+1].date_fin+"</button>";} 
       } 

      } 

      ); 
      $('.modal-title').text('Disponibilité'); 
     $('#corps').html(buttons); 
     $('#groupe_modal').modal('show'); 

     }, 
     }); 

} 

我的問題是,雖然我工作了當前我無法到達下一個元素。數據是我在ajax函數中收到的一個參數,這段代碼只是爲了讓我自己清楚,並且將它寫在我的項目的不同部分。謝謝!

回答

2

forEach回調函數有3個參數,function(element, index, array)

`element` The current element being processed in the array. 
`index` The index of the current element being processed in the array. 
`array` The array that forEach() is being applied to. 

所以,如果你的第二個參數添加到您的功能,這將是指數,那麼你可以很容易地訪問下一data[index + 1](或以前data[index - 1] )物品

不要忘了在使用時不要忘記正確檢查您不在最後(先前爲先前)元素

更新基於一個問題編輯

如果第二第三個參數添加到您的功能,indexarrayforEach()被應用到,那麼你就可以訪問下一個(或以前)的項目是這樣的:

array[index + 1]  //next 
array[index - 1]  //previous 
function evenement(id) 
{ 
    $.ajax({ 
     url : "<?php echo site_url('index.php/salle/evenement/')?>/" + id, 
     type: "GET", 
     dataType: "JSON", 
     success : function(data) 
     { 
      var start_date =8; 
      var end_date =18; 
      var buttons =""; 
      data.forEach(function(element, index, array) 
      { 
       for (var i = start_date; i < end_date; i++) { 
         if (element.date_debut == i) {i=element.date_fin;} 
         if (element.date_debut != i) {buttons +="<button>"+i+"->"+array[index+1].date_fin+"</button>";} 
       } 
      }); 
      $('.modal-title').text('Disponibilité'); 
      $('#corps').html(buttons); 
      $('#groupe_modal').modal('show'); 
     } 
    }); 
} 
+0

記得檢查一下,看看你是否在最後一個元素上,並優雅地處理「下一個元素」的不存在。 –

+0

@ SMCrohan當然這是必要的,但發現不直接相關,因爲我沒有以任何方式將實際的新代碼添加到現有的 – LGSon

+0

我需要訪問下一個元素,任何命題請 –

相關問題