Как перейти к следующему пункту, вместо того, чтобы останавливаться на неопределенном в forEach - PullRequest
0 голосов
/ 07 мая 2019

Я генерирую несколько делений, используя функцию 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&nbsp;<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&nbsp;<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
};

1 Ответ

0 голосов
/ 08 мая 2019

Отредактированный код выше решил эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...