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:23. |