Javascript 如何获取$getJSON后面的变量值?

Javascript 如何获取$getJSON后面的变量值?,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,在下面的代码中,我有一个计数元素的函数计数器。我使用counter函数来计算JSON文件中的元素。我的问题是如何在$getJSON之后获取计数器的值,以及为什么当我控制台将计数器记录在括号外时,我会一直未定义,为什么它不记得最后一个值,而如果我控制台将计数器记录在括号内,我会获取JSON文件中的元素数。我想得到元素的数量,这样之后我就可以在下面的for循环中使用这个数字 //全局变量 var c=0; var a; var b; //反作用 功能计数器{ 返回C++; } //文件准备功能 $

在下面的代码中,我有一个计数元素的函数计数器。我使用counter函数来计算JSON文件中的元素。我的问题是如何在$getJSON之后获取计数器的值,以及为什么当我控制台将计数器记录在括号外时,我会一直未定义,为什么它不记得最后一个值,而如果我控制台将计数器记录在括号内,我会获取JSON文件中的元素数。我想得到元素的数量,这样之后我就可以在下面的for循环中使用这个数字

//全局变量 var c=0; var a; var b; //反作用 功能计数器{ 返回C++; } //文件准备功能 $document.readyfunction{ $.getJSONhttps://graph.facebook.com/v3.2/...,函数数据{ var项目=[]; $.eachdata.data,函数i,obj{ //$'target'。追加$,{id:'dummy'+i} var text='

'+obj.review\u text+'

' 变量日期=“

”+obj.created\u time+”

' a=计数器; $carousel.find[data index='+i+']。appendtext,date console.loga//这里我得到了JSON文件中的元素数 }; }; console.loga//但是如果我把控制台日志放在这里,我得到的是未定义的,而不是数字 var wrapper=document.getElementByIdcarousel; var myHTML=;
对于b=0;b将代码移动到ajax调用中,以便在返回/处理数据后执行:

$(document).ready(function () {
    $.getJSON("https://graph.facebook.com/v3.2/...", function (data) {
        var items = [];
        $.each(data.data, function (i, obj) {
            //$('#target').append($('<div/>', { id: 'dummy' + i }))
            var text = '<p class="review_text">' + obj.review_text + '</p>'
            var date = '<p class="date">' + obj.created_time + '</p>'
            a = counter();
            $("#carousel").find("[data-index='" + i + "']").append(text, date)

            console.log(a) //here I get the number of elements inside the JSON file

        });

    console.log(a) //but if I put the console log here, I get undefined instead of the number
    var wrapper = document.getElementById("carousel");
        var myHTML = '';
        for (b = 0; b <= a; b++) { //here I want to use what the function returns, so if I have 10 elements in the JSON file I can create 10 div elements in the HTML, it works only if I put number instead of 'a' but I want to use 'a' so I do not have to count the elements as well, the elements will increase.
            myHTML += '<div id="review" data-index=' + (b) + '></div>';
        }
        wrapper.innerHTML = myHTML;
    });       
});

因为加载是异步的,并且当您记录它时分配还没有发生out@SamiKuhmonen好的,谢谢。你知道我如何在foor循环中得到那个值吗?为什么不把循环移到回调中?如果我把for循环和它上面的变量放在回调中,可能会重复@SamiKuhmonen$getJSON,它不工作,也不创建html div,它不工作。我刚刚尝试过它,它确实返回了我需要的值,但我有另一个问题,那就是:它不在html中创建div元素……没有任何更改,所以应该没有区别,除了现在在ajax回调后发生循环,值是多少您在console中得到的a的e?console.log中myHTML的值是多少?还可以尝试在循环中用10替换a,就像您之前尝试的那样,看看它是否仍然有效。“myHTML”的值控制台日志中有div,但我有另一个问题。从js中,我在owl转盘div中插入div元素,当我这样做时,div没有得到owl item类。您现在提到的超出了问题中提到的问题的范围。基本上,在这些行之后有更多的代码,这取决于现在异步方法中的代码不再工作。您正在对尚未创建的div应用carousel。是的,这是真的!