【发布时间】:2016-06-30 23:17:39
【问题描述】:
我有多个记录的数组,每条记录都有 ID、事件名称和客户名称。我使用的算法似乎没有按我想要的方式工作。在开始循环遍历数组之前,我在循环外部设置了空变量var eventId;,然后我开始循环,在循环内部我有多个 if 语句。因此,如果 eventId 为空,我想在 tr 后面附加事件名称,并在其下方附加另一个带有客户名称的 tr。然后下次如果我的 eventId 不为空,我想检查名称是否与记录匹配,如果它们匹配,我只想在现有 tr 中附加 td 并输出客户名称。如果它们不匹配,我想输出带有事件名称的新 tr 和带有客户名称的新 tr。我在这里有一个工作示例,看起来我在屏幕上输出了两次Test 1,我不希望这样。我应该只拥有一次事件名称,并且该事件下的所有客户都应该拥有该事件的所有客户。
这是我的代码:
https://jsfiddle.net/dmilos89/t1v2r8jm/3/
如果您看到我的代码在哪里出错,请告诉我。我认为我在添加元素时遇到问题,或者我的算法缺少某些东西。提前致谢。
Javascript 代码:
$( document ).ready(function() {
var myRes = [];
myRes.push({'myId':"42",'eventName':"Test 1",'rCustomer':"Mike, Allan"});
myRes.push({'myId':"42",'eventName':"Test 1",'rCustumer':"Gates, Bill"});
myRes.push({'myId':"19",'eventName':"Spring 2016",'rCustomer':"John, Bill"});
myRes.push({'myId':"19",'eventName':"Spring 2016",'rCustomer':"Adams, Ron"});
myRes.push({'myId':"31",'eventName':"May Test 1",'rCustomer':"Steve, Marie"});
myRes.push({'myId':"42",'eventName':"Test 1",'rCustomer':"Ariel, Bill"});
myRes.push({'myId':"32",'eventName':"Fall 2016",'rCustomer':"Ron, Nill"});
myRes.push({'myId':"32",'eventName':"Fall 2016",'rCustomer':"Kim, Alen"});
myRes.push({'myId':"32",'eventName':"Fall 2016",'rCustomer':"Will, Huges"});
myRes.push({'myId':"32",'eventName':"Fall 2016",'rCustomer':"Seth, Peak"});
var eventId = '';
var count = 1;
for(var i=0; i< myRes.length; i++){
if(eventId != ''){
if(eventId == myRes[i].myId){
$('#row_' + count).append('<td>'+myRes[i].rCustomer+'</td>');
}else{
eventId = myRes[i].myId;
count++;
$('.myReservation').append('<tr><td><b>Event: '+myRes[i].eventName+'</b></td></tr>');
$('.myReservation').append('<tr id="row_"'+count+'><td>'+myRes[i].rCustomer+'</td></tr>');
}
}else{
eventId = myRes[i].myId;
$('.myReservation').append('<tr><td><b>Event: '+myRes[i].eventName+'</b></td></tr>');
$('.myReservation').append('<tr id="row_"'+count+'><td>'+myRes[i].rCustomer+'</td></tr>');
}
}
});
HTML 代码:
<table>
<tbody class="myReservation">
</tbody>
</table>
【问题讨论】:
-
发布有问题的相关代码怎么样???
-
@A.Wolff 我没有看到两次编写代码的意义,我使用测试所需的所有数据创建了工作示例。
-
如果将来您遇到其他问题并通过此站点搜索并找到带有答案的类似问题并且都指向任何外部死链接,那么您将获得始终发布相关代码的意义...现在你有超过 500 个代表,你应该知道。
-
好的,谢谢建议。
-
我没有时间为你写一个解决方案,但我的第一个想法是你的问题出现了,因为你的数据没有特定的顺序。为每个事件创建仅包含属于该事件的对象的子数组会更直接,然后将每个子数组渲染出来。
标签: javascript jquery html arrays