2017-04-17 30 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

我需要访问下一个元素,任何命题请 –

相关问题