Я генерирую несколько делений, используя функцию forEach из данных JSON. Когда в моих данных json было всего несколько тестовых элементов, все работало нормально. Теперь, когда json содержит до 50+ наборов элементов, ноль не определен, что отменяет функцию. Любой из +e.portal.fields[0].xxxx+
вызывает это. Я удалил +e.portal.fields[0].xxxx+
один за другим, чтобы попытаться определить, было ли это проблемой поле, но мне пришлось удалить все ссылки на fields[0]
, чтобы завершить функцию. Обратите внимание, что ссылка на fields[1]
работает нормально.
var lists = "";
dataJ.items.forEach(function(e){
var jobcard = '<article id="listing_'+e.adId+'" attrlocation="'+e.portal.fields[1].valueId+'" title="'+e.title+'" class="col-12 mb-3 all_i all_r all_l '+e.portal.fields[0].valueId+' '+e.portal.fields[0].fields[0].valueId+' '+e.portal.fields[1].value+' '+e.portal.fields[1].valueId+'"><div class="container article align-items-stretch bg-white"><div class="row no-gutters"><div class="col-lg-10 col-sm-12 job-detail-contents bg-white p-3"><div class="row"><div class="col-lg-7 col-sm-12 job-title text-capitalize"><h2>'+e.title+'</h2></div><div class="col-lg-5 col-sm-12 job-mini-details time-stmp">posted <time class="timeago" datetime="'+e.postedAt+'"> '+e.postedAt+'</time></div></div><div class="row" ><div class="col-lg-7 col-xs-4"><span style="color: #0c53a0; font-size: .85em; font-weight: 600; padding-right: 10px;text-transform: uppercase; letter-spacing: .12em;">Summary:</span><p class="job-details job_spec_summary" style="font-size: .85em;">'+e.summary+'</p></div><div class="col-lg-5 col-xs-8 job-mini-details"><div class="row"><div class="col-12"><i class="fa fa-map-marker-alt fa-sm pr-1 job_spec" style="margin-top: -.1em; color: #0c53a0;"></i><span>'+e.portal.fields[1].value+'</span></div><div class="col-12"><i class="fas fa-address-card pr-1" style="color: #0c53a0;"></i><span>'+e.portal.fields[0].value+'</span></div><div class="col-12"><i class="fas fa-building pr-1" style="color: #0c53a0;"></i><span>'+e.portal.fields[0].fields[0].value+'</span></div></div></div></div></div><div class="col-lg-2 col-sm-12 bg-transparent mb-sm-2 text-right"><button id="link-to-'+e.adId+'" href="#details-'+e.adId+'" class="btn btn-primary animated p-3 mt-5 mb-5 mr-1 changing-btn" data-hover="Check it Out" data-active="Please Wait..."><span class="d-inline-block text-white text-uppercase font-weight-bold pl-2"><i class="far fa-eye fa-lg text-white d-inline-block pr-2 "></i>details</span></button></div></div></div></article>';
lists+=jobcard;
});
$('#flatdiv').append(lists);
Вот макет JSON:
{
adId:75480,
title:"some title",
reference:"219109",
summary:"some summary",
bulletPoints:[
"something",
"something",
"something"
],
portal:{
fields:[
{
fieldId:something,
fieldName:"something",
valueId:something,
value:"something",
fields:[
{
fieldId:something,
fieldName:"something",
valueId:something,
value:"something"
}
]
},
{
fieldId:something,
fieldName:"something",
valueId:something,
value:"something"
},
{
fieldId:something,
fieldName:"something",
valueId:something,
value:"something"
}
]
},
description:"something"
},
....
Возможно, один из наборов элементов просто не имеет этих полей, но обыскивает страницы и страницы данных json, чтобы найти, какой из них кажется болезненным, и я не смог определить проблемный набор элементов.
Что я могу сделать с моим кодом, чтобы просто пропустить тот, который вызывает ошибку, и перейти к следующему div, который должен быть создан?
ОБНОВЛЕНО:
dataJ.items.forEach(function(e){
if ($(e.portal.fields[0].fields[0].valueId).length > 0){
var jobcard = '<article id="listing_'+e.adId+'" attrlocation="'+e.portal.fields[1].valueId+'" title="'+e.title+'" class="col-12 mb-3 all_i all_r all_l '+e.portal.fields[0].valueId+' '+e.portal.fields[0].fields[0].valueId+' '+e.portal.fields[1].value+' '+e.portal.fields[1].valueId+'"><div class="container article align-items-stretch bg-white"><div class="row no-gutters"><div class="col-lg-10 col-sm-12 job-detail-contents bg-white p-3"><div class="row"><div class="col-lg-7 col-sm-12 job-title text-capitalize"><h2>'+e.title+'</h2></div><div class="col-lg-5 col-sm-12 job-mini-details time-stmp">posted <time class="timeago" datetime="'+e.postedAt+'"> '+e.postedAt+'</time></div></div><div class="row" ><div class="col-lg-7 col-xs-4"><span style="color: #0c53a0; font-size: .85em; font-weight: 600; padding-right: 10px;text-transform: uppercase; letter-spacing: .12em;">Summary:</span><p class="job-details job_spec_summary" style="font-size: .85em;">'+e.summary+'</p></div><div class="col-lg-5 col-xs-8 job-mini-details"><div class="row"><div class="col-12"><i class="fa fa-map-marker-alt fa-sm pr-1 job_spec" style="margin-top: -.1em; color: #0c53a0;"></i><span>'+e.portal.fields[1].value+'</span></div><div class="col-12"><i class="fas fa-address-card pr-1" style="color: #0c53a0;"></i><span>'+e.portal.fields[0].value+'</span></div><div class="col-12"><i class="fas fa-building pr-1" style="color: #0c53a0;"></i><span>'+e.portal.fields[0].fields[0].value+'</span></div></div></div></div></div><div class="col-lg-2 col-sm-12 bg-transparent mb-sm-2 text-right"><button id="link-to-'+e.adId+'" href="#details-'+e.adId+'" class="btn btn-primary animated p-3 mt-5 mb-5 mr-1 changing-btn" data-hover="Check it Out" data-active="Please Wait..."><span class="d-inline-block text-white text-uppercase font-weight-bold pl-2"><i class="far fa-eye fa-lg text-white d-inline-block pr-2 "></i>details</span></button></div></div></div></article>';
console.log(e.adId);
} else {
return
};