JQuery .load() в цикле For работает не совсем логично...
Приветствую всех.
Пытаюсь выполнить следующий код, но он работает ни так, как мне нужно: if(условие){ $('body').append("<div id='loaddiv'><div>"); for(var i=1; i<=100; i++){ var dl = 0; $('#loaddiv').load('/script/?p='+i); dl = $('#loaddiv .standart-view tr').length; alert(dl); } } Таким образом, я должен получить количество tr-элементов, родителем которого является элемент с классом standart-view, а его родитель - div блок c id = load214235, для каждой страницы, НО постоянно выводятся нули в алерте :( Я пытался модернизировать код, добавив весь код в callback функцию лоада, чтобы все загрузилось, а потом выполнится остальная часть кода, но все та же не работающая хрень получается (он отказывается видеть dl)... if(условие){ $('body').append("<div id='loaddiv'><div>"); for(var i=1; i<=100; i++){ var dl = 0; $('#loaddiv').load('/folder/?p='+i, function(){ dl = $('#loaddiv .standart-view tr').length; alert(dl); }); } } + у меня после load еще должно идти условие с break; но firebug на него так же ругается, что break не знает, что закрывать... Как мне выйти из ситуации, не подскажете? Чувствую, что что-то намутил с видимостью переменных и данные не успевают подгрузиться с другой страницы, а скрипт летит впереди поровоза. Jquery подключен, весь остальной код рабочий, включая функции из jquery, иерархия элементов на другой странице соблюдена (кол-во tr должно находиться). |
andreloster,
попробуйте неиспользовать for для подобных задач. поставьте var в 6 строке. |
Цитата:
|
Цитата:
|
andreloster,
сделайте функцию -- загрузили i = 0 ; пришёл ответ -- проверили что хотели -- увеличили i и снова запустили функцию. или медитируйте в сторону promises и deferred http://javascript.ru/forum/jquery/45...tml#post300426 - учитесь мыслить в асинхронном стиле :) а так у вас пришёл 3 результат стёр пятый ... для примера |
:write: типа так
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>load demo</title> <style> body { font-size: 12px; font-family: Arial; } </style> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <b>Projects:</b> <ol id="new-projects"></ol> <script> $('body').append("<ol id='loaddiv'><ol>"); var i = 0; (function foo() { if(i == 6) {alert($("body").html());return}; $("#new-projects li").appendTo("#loaddiv"); $( "#new-projects" ).load( "http://api.jquery.com/resources/load.html #projects li:eq("+i+")",foo); i++ })() </script> </body> </html> |
Часовой пояс GMT +3, время: 15:25. |