for (i = 0; i < document.querySelectorAll('span.movie-cast-title').length; i++) { if (document.querySelectorAll('span.gcharacter')[i].innerText, == 'null') { continue; } data.actor.push({ "@type": "PerformanceRole", "actor": { "@type": "Person", "name": document.querySelectorAll('span.movie-cast-title')[i].innerText, "url": document.querySelectorAll('a.movie-cast-url')[i].href, } "characterName": document.querySelectorAll('span.gcharacter')[i].innerText, }); }cómo omitir queryselectorall no existe o nulo "characterName": document.querySelectorAll('span.gcharacter')[i].innerText
Debe verificar si el índice, es decir, i está dentro de los límites de querySelectorAll:
if(i >= document.querySelectorAll('span.gcharacter').length) { continue; }Debe verificar si el elemento existe, no el innerText . Porque si el elemento no existe, no puede obtener su innerText .
if (!document.querySelectorAll('span.gcharacter')[i]) { continue; }¿No sería más claro usar un forEach?
const spCharacters = document.querySelectorAll('span.gcharacter') , aMovieCast = document.querySelectorAll('a.movie-cast-url') ; document.querySelectorAll('span.movie-cast-title').forEach( (sp,i) => { if (spCharacters[i].innerText !== 'null') { data.actor.push( { '@type' : 'PerformanceRole' , 'actor' : { '@type' : 'Person' , 'name' : sp.innerText, , 'url' : aMovieCast[i].href, } , 'characterName': spCharacters[i].innerText }); } }