【问题标题】:Inconsistent/ Ignored for loop in Javascript?Javascript中的循环不一致/被忽略?
【发布时间】:2019-08-17 19:26:19
【问题描述】:

我有一个遍历一些 xml 的 for 循环。它顺利通过了大约 110 次,然后(莫名其妙地)似乎忽略了 for 循环中的 if 语句。任何帮助将不胜感激。

<script>
  for (let z=0; z<agearray.length;z++){
      for (let p=0; p<samplearray.length;p++){
          console.log((samplearray[p]));

          if(typeof(samplearray[p]==="object")){

              if (samplearray[p].getAttribute("age")===agearray[z]){
                  var qwerty=samplearray[p];
                  console.log("test");
                  ///blah blah blah, if statement continues
              }
          } 
       }
   }
</script>

因此,循环成功地迭代了很多次,测试语句按预期记录。一旦它进入第 111 次迭代,我在第二个 if 语句中收到错误消息“Uncaught TypeError: Cannot read property 'getAttribute' of undefined”。如果我是正确的,我会认为第二个 if 语句将无法执行,除非 samplearray[p] 被定义。循环可以正确跳过其他未定义的对象,所以我很难过。

有什么想法吗?

【问题讨论】:

    标签: javascript arrays xml for-loop


    【解决方案1】:

    根据您附加的代码 sn-p 没有正确检查 if 语句

    你应该使用

    if(typeof samplearray[p]==="object"){
    

    而不是

     if(typeof(samplearray[p]==="object")){
    

    您的条件基本上是检查条件语句samplearray[p]==="object",它将给出布尔结果。

    【讨论】:

    • 就是这样。谢谢。我不知道为什么它每次都停在特定的线路上,但现在可以了。
    【解决方案2】:

    我认为你有一个语法错误 typeof(samplearray[p]==="object")。这将始终评估为 boolean if 语句中接受它。 你应该做typeof(samplearray[p])==="object"。现在如果 samplearray[p] 未定义,它不会在 if 语句中被接受

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      相关资源
      最近更新 更多