【问题标题】:how to skip queryselectorall does not exist or null如何跳过 queryselectorall 不存在或为空
【发布时间】:2022-01-20 14:33:30
【问题描述】:
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,
  });
}

如何跳过 queryselectorall 不存在或为空 "characterName": document.querySelectorAll('span.gcharacter')[i].innerText

【问题讨论】:

    标签: javascript if-statement null schema


    【解决方案1】:

    您需要检查元素是否存在,而不是innerText。因为如果元素不存在,则无法获取其innerText

    if (!document.querySelectorAll('span.gcharacter')[i]) {
        continue;
    }
    

    【讨论】:

    • 此方法有效,但取值错误,例如 span.movi​​e-cast-title i=0, span.gcharacter j=0。 0,0。 span.movi​​e-cast-title i=1, span.gcharacter i=1 不存在,因此值添加 span.gcharacter i=2 0,2。我要1;和 span.gcharacter i=2, span.gcharacter i=2 2,2 ; ---- 0,0; 1个; 2,2
    • 我也在尝试如果其他方法不起作用stackoverflow.com/questions/70397020/…
    【解决方案2】:

    使用 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
          });
        }
      }
    

    【讨论】:

    • 它的错误,或阶段
    • 你总是用谜来表达自己吗?
    • 我也在尝试如果其他方法不起作用stackoverflow.com/questions/70397020/…
    • “不工作”不是答案,您不想添加重要的 HTML 部分吗?
    【解决方案3】:

    需要检查索引,即i是否在querySelectorAll的范围内:

    if(i >= document.querySelectorAll('span.gcharacter').length) {
        continue;
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2018-03-29
      • 2017-11-03
      • 2014-12-12
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      相关资源
      最近更新 更多