无法读取函数

时间:2017-08-21 15:56:35

标签: jquery

我添加了一个全局对象,我通过jquery getjson插入我的json 现在我想在函数内的if条件中使用它 我已将其声明为函数的参数,但我仍然收到错误:

TypeError: jsonData is undefined

如果有人能解决问题,那就太棒了。这是我的功能:

function getConcept(jsonData){

    $('a').click(function() {

                var clickedItem = $(this).attr('title');
                if(jsonData.icon!=null){
                    var concept = clickedItem;
                    identifiedObjectsList.push(concept);
                    console.log(identifiedObjectsList);
                    $("#Boma").append($("<img>", {"src": "Boma.png" ,"style": "width:25px; height:20px; position:absolute; left:" +
                        x + "px; top:" + y + "px;"}));
                }
                else {
                    var concept = undefined;
                }
                    console.log(concept);
        });
    };

我在if条件中收到此错误。

这就是我调用getConcept的方式:

function varCallBack(){
        $.each(json_data.menu, function () {
        $menu.append(
            getMenuItem(this)
        );

            getConcept(json_data);

    });

下面是全局对象的声明,然后将json插入其中​​:

var json_data = {};

jQuery.getJSON("/concepts2.json", function(data) {
        console.log(data);
        json_data = data;
        varCallBack();

         });

这是我的json:

{
"menu": [{

        "name": "concepts",
        "id": "1",
        "icon": null,
        "children": [
            {
                "name": "land characteristic",
                "id": "1.1",
                "icon": null,
                "children": [
                    {
                        "name": "school",
                        "id": "1.1.1",
                        "icon": "/black images/Other buildings.png",
                        "children": null
                    }
                    {
                        "name": "house",
                        "id": "1.1.2",
                        "icon": null,
                        "children": null
                    }
            ]
        }]
    }]
}

1 个答案:

答案 0 :(得分:0)

你需要在单击时引用全局变量,因为jsonData是本地函数变量,它将在函数调用后被销毁

function getConcept(){
$('a').click(function() {

            var clickedItem = $(this).attr('title');
            var concept;
            if(json_data.icon!=null){
                concept = clickedItem;
                identifiedObjectsList.push(concept);
                console.log(identifiedObjectsList);
                $("#Boma").append($("<img>", {"src": "Boma.png" ,"style": "width:25px; height:20px; position:absolute; left:" +
                    x + "px; top:" + y + "px;"}));
            }
            else {
                concept = undefined;
            }
                console.log(concept);
    });
};

你对此函数的调用就像下面的

function varCallBack(){
    $.each(json_data.menu, function () {
    $menu.append(
        getMenuItem(this)
    );
        getConcept();

});

var json_data;

jQuery.getJSON("/concepts2.json", function(data) {
    console.log(data);
    json_data = data;
    varCallBack();

     });