es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo omitir el valor document.querySelectorAll si es nulo o no existe

<script>
(function(){
    var data = {
  "@context": "https://schema.org",
  "@type": "Movie",
  "actor": [],
};
for (i = 0; i < document.querySelectorAll('span.movie-cast-title').length; i++) 
{
  if (!document.querySelectorAll('span.gcharacter')[i]) {
        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,
    },
});
}
  else
  {
  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,
    });
}

var script = document.createElement('script');
  script.type = "application/ld+json";
  script.innerHTML = JSON.stringify(data);
  document.getElementsByTagName('head')[0].appendChild(script);
})(document);
</script>

Cómo omitir el campo “characterName”: document.querySelectorAll(‘span.gcharacter’)[i].innerText, si está vacío. Si characterName no existe, omitir solo la variable characterName. ¿El bloque if else está correcto o se puede utilizar otro bloque?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para omitir el campo “characterName” cuando está vacío, puedes modificar la declaración if-else en el código proporcionado de la siguiente manera:

    for (i = 0; i < document.querySelectorAll('span.movie-cast-title').length; i++) {
      var actor = {
        "@type": "Person",
        "name": document.querySelectorAll('span.movie-cast-title')[i].innerText,
        "url": document.querySelectorAll('a.movie-cast-url')[i].href
      };
    
      if (document.querySelectorAll('span.gcharacter')[i] && document.querySelectorAll('span.gcharacter')[i].innerText) {
        var characterName = document.querySelectorAll('span.gcharacter')[i].innerText;
        data.actor.push({
          "@type": "PerformanceRole",
          "actor": actor,
          "characterName": characterName
        });
      } else {
        data.actor.push({
          "@type": "PerformanceRole",
          "actor": actor
        });
      }
    };
    

    Aquí, primero creamos un objeto actor sin el campo characterName. Dentro de la condición if, verificamos si el elemento span que contiene el nombre del personaje existe y no está vacío. Si es así, agregamos el campo characterName al objeto PerformanceRole. De lo contrario, omitimos agregarlo, pero aún agregamos el objeto actor al arreglo data.actor.

    Ten en cuenta que también hemos eliminado las comas finales después del último campo en cada objeto, ya que pueden causar errores en algunos navegadores.

Comments are closed.