如何添加项目到jQuery中的数组?

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,格式正确,一切都很正常。 我似乎无法添加一个项目,我错过了什么?

既然$.getJSON是asynchronous的,我想你的console.log(list.length); 代码在数组已被填充之前触发。 要解决这个问题,请将console.log语句放在callback中:

 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); }); 

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

实现你想要的唯一方法是改变ajax调用是同步的。 你可以通过使用.ajax和asynchronous传递来做到这一点:false然而,这是不推荐的,因为它locking用户界面,直到调用返回,如果失败返回用户必须崩溃的浏览器。

希望对你有帮助..

 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); }); }); });