如何在jQuery中向数组添加项?

时间:2009-08-30 06:35:58

标签: jquery json firebug getjson

var list = [];
$.getJSON("json.js", function(data) {
    $.each(data, function(i, item) {
        console.log(item.text);
        list.push(item.text);
    });
});
console.log(list.length);

list.length总是返回0.我已经在firebug中浏览了JSON并且它已经很好地形成了,一切看起来都很好。我似乎无法在数组中添加一个项目,我缺少什么?

3 个答案:

答案 0 :(得分:117)

由于$.getJSON是异步的,我认为您的console.log(list.length);代码在填充数组之前就会触发。要更正此问题,请将console.log语句放入回调中:

var list = new Array();
$.getJSON("json.js", function(data) {
    $.each(data, function(i, item) {
        console.log(item.text);
        list.push(item.text);
    });
    console.log(list.length);
});

答案 1 :(得分:3)

您正在发出异步的ajax请求,因此您的控制台日志列表长度发生在ajax请求完成之前。

实现目标的唯一方法是将ajax调用更改为同步。您可以通过使用.ajax并传入asynch:false来执行此操作,但不建议这样做,因为它会在调用返回之前锁定UI,如果它无法返回,则用户必须从浏览器中崩溃。

答案 2 :(得分:3)

希望这会对你有帮助..

var list = [];
    $(document).ready(function () {
        $('#test').click(function () {
            var oRows = $('#MainContent_Table1 tr').length;
            $('#MainContent_Table1 tr').each(function (index) {
                list.push(this.cells[0].innerHTML);
            });
        });
    });