JavaScript变量为空,而没有先前的警报消息 [英] JavaScript variable empty without previous alert messge

查看:106
本文介绍了JavaScript变量为空,而没有先前的警报消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下函数从JSON文件创建链接列表,并将其放入span元素(jquery已初始化)

I'm using the following function to create a list of links from a JSON-File and put them into a span element (jquery has been initialized)

$(document).ready(function() {

function createjson(category) {
        var content = "";
    i = 0;
    $.getJSON(category + ".txt", function(data){
        while(data[i] != null) {
            content = content + '<li class="liste"><a target="_blank" class="liste" href="' + data[i].url + '">' + data[i].name + '</a></li>';
            i++;
        }

    }); 
    document.getElementById("list_" + category).innerHTML = content;
}

createjson("cat1"); 

});

但是,如果我这样使用它,span元素将保持为空.只有当我更换

However, if I use it like this, the span element remains empty. It is only when I replace

document.getElementById("list_" + category).innerHTML = content;

alert("test");
document.getElementById("list_" + category).innerHTML = content;

我得到了期望的输出.如何在不事先打印警报消息的情况下获得它?

that I get the desired output. How can I get it without printing out an alert message beforehand?

推荐答案

将html追加置于回调中,并在回调开始时重置i.

Put the html append in callback, also reset the i when call back starts.

$(document).ready(function() {

function createjson(category) {

    $.getJSON(category + ".txt", function(data)
    {
        var content = "";
        for(i=0; i<data.length; i++)
        {
            content = content + '<li class="liste"><a target="_blank" class="liste" href="' + data[i].url + '">' + data[i].name + '</a></li>';
        }
        document.getElementById("list_" + category).innerHTML = content;
    }); 

}

createjson("cat1"); 

});

这篇关于JavaScript变量为空,而没有先前的警报消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆