无限循环不起作用

时间:2016-12-15 09:43:05

标签: javascript json loops

我有一个循环,我加载一个json对象,我希望json文件中的数据将实时显示在我的传单中。 当我在json文件中添加值时,jsonData.length向我显示更新的长度,但循环不会增加变量j。 将新值添加到json文件后,如何增加变量j?

function Loop() {
    setTimeout(function() {
        load_js();
        jsonData=loadJSON();  //load JSON Data

        lat = jsonData[j];
        lon = jsonData[j+1];

        var id = Math.floor((Math.random() * 2) + 1);
        jdl = jsonData.length;
        mapUpdater("" + id, lat, lon);


        if (j < jsonData.length) {
            j=j+2;
        }

        Loop();

    }, 1000)
}

2 个答案:

答案 0 :(得分:1)

您需要更改j的范围。或者你可以将j添加到Loop函数的参数。

function Loop(j) {
  if (j === undefined)
    j = 0;
  setTimeout(function() {

    load_js();
    jsonData = loadJSON(); //load JSON Data

    lat = jsonData[j];
    lon = jsonData[j + 1];

    var id = Math.floor((Math.random() * 2) + 1);
    jdl = jsonData.length;
    mapUpdater("" + id, lat, lon);


    if (j < jsonData.length) {
      j = j + 2;
    }

    Loop(j);

  }, 1000)
}
Loop();

答案 1 :(得分:1)

感谢您的帮助。 也许我没有详细阐述我的问题。

我自己发现了这个问题。 我认为if条件是问题所在。

我认为阵列超出了范围。 这个问题的答案是:

我改变了这个:

if (j < jsonData.length) {
            j=j+2;
        }

到此:

if (j < jsonData.length-2) {
            j=j+2;
        }