Как добавить элементы в массив в 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. Я просматривал JSON в firebug, и он хорошо сформировался, и все выглядит нормально. Я просто не могу добавить элемент в массив, что мне не хватает?
Ответы
Ответ 1
Так как $.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);
});
Ответ 2
Вы делаете запрос ajax, который является асинхронным, поэтому ваш журнал консоли длины списка возникает до завершения запроса ajax.
Единственный способ добиться того, что вы хотите, - это изменить вызов ajax на синхронный. Вы можете сделать это, используя .ajax и переходя в asynch: false, но это не рекомендуется, поскольку он блокирует пользовательский интерфейс до тех пор, пока вызов не вернется, если он не сможет вернуть пользователя, он должен выйти из браузера.
Ответ 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);
});
});
});