通过JSON文件在.each中进行迭代时,在选择器上使用.length

时间:2019-05-02 21:40:19

标签: jquery json

我正在尝试使用jQuery从JSON文件中读取数据。我一般对jQuery,JavaScript和编码都不熟悉,所以遇到了难以解决的问题。

这段代码:var n = $(element3).length;似乎是造成我问题的原因。我正在使用嵌套的.each函数来迭代JSON文件。我使用上面的行来确定数组的开始。但是,当程序到达非常长的字符串时,该代码将失败。

我做了一些研究,发现有人向与我自己有类似问题的人推荐$('#selector')。val()。length和$('#selector')。text()。length。但是,两者都不起作用。

虽然我知道使用jQuery来确保代码在所有浏览器上都能正常工作,但我也想提一下,以防有人问我测试了该代码,并在多个浏览器中遇到了相同的问题。

JSON文件的结构如下:

{
  "key" : {
    "key" : {
      "key" : "value", //a comment
      "key" : "value", //numbers
      "key" : "value", //numbers
      "key" : "value", //id number
      "key" : [ //question/answer array
        { "key" : "value", "key" : "value" }, 
        {"key" : "value", "key" : "value" },
        ...
       } ]
    },  
...repeats...
  }
}

这是我要用来读取JSON文件的完整代码,没有HTML。在代码正常工作之后,我将把嵌套循环变成一个函数。

$(document).ready(function(){
  $.getJSON('GameData.json', function(data){

    $.each(data, function(index, element){
      console.log("element1: " + index + " : ");

      $.each(element, function(index2, element2){
        console.log("element2: " + index2 + " : ");

        $.each(element2, function(index3, element3){
          console.log("element3: " + index3 + " : " + element3);

          var n = $(element3).length; //This is causing failure

          //lists if n has data
          console.log("element3 data: "+ n)

          if(n != 0){

            $.each(element3, function(index4, element4){
              console.log("element4: " + index4 + " : " + element4);

              $.each(element4, function(index5, element5){
                console.log("element5: " + index5 + " : " + element5);
              });
            });
          }
        });
      });
    });          
  });               
});

我希望能将所有数据读入并打印到控制台窗口。相反,我有以下错误:

jquery-3.4.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: The comment that it's catching on, then:
    at Function.se.error (jquery-3.4.0.min.js:2)
    at se.tokenize (jquery-3.4.0.min.js:2)
    at se.select (jquery-3.4.0.min.js:2)
    at Function.se [as find] (jquery-3.4.0.min.js:2)
    at k.fn.init.find (jquery-3.4.0.min.js:2)
    at new k.fn.init (jquery-3.4.0.min.js:2)
    at k (jquery-3.4.0.min.js:2)
    at String.<anonymous> (index.html:71)
    at Function.each (jquery-3.4.0.min.js:2)
    at Object.<anonymous> (index.html:68)

非常感谢您提供的所有帮助!

0 个答案:

没有答案