在我的项目中,我必须检查时间表的可用时间,以便插入一个应该包含两个值作为文本的按钮。这一天从8点开始,到18点结束,每天都有会话。我有一个包含当天所有会话的JSON数组,每个会话都有一个开始时间和一个结束时间,所以当我找到任何时间空间时,我想在我的html上添加一个按钮。这个按钮将有一些文本(例如:8-> 10)和onClick
方法,它将带我到另一个函数。这是一些代码,我希望它可以使我的问题更容易理解:
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函数中收到的参数,这段代码只是让我自己清楚,我在项目的不同部分写了它。谢谢!
答案 0 :(得分: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]
)项目
在使用 时,不要忘记正确检查您是不是最后一个(上一个)元素
根据问题编辑
进行了更新如果您将第二个和第三个参数添加到您的函数中,index
和array
forEach()
被应用到,那么您可以访问下一个(或之前的)项目如下:
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');
}
});
}