2011-12-27 2 views
0

У меня есть функция ниже, через которую я пытаюсь добавить что-то. он внутренне вызывает другую функцию, которая выполняет функцию на добавление ..jquery for loop issue

function something() 
    for(var i=0; i <= obj.result.length; i++) { 

EDIT

obj = objEval.result[i].uniquename; 
    prop = objEval.result[i].prop; 
    count = objEval.result[i].count; 


     // count is 21 in my case. below function is called.. 
     if (count > 0){ 
      callAdd(obj,prop); 
     } 

    } 
} 

фактическая функция, которая делает прилагаемой

function callAdd(obj,prop){ 
    // obj exists in DOM.. checked via $(obj).length -- greater than 0 
    $(obj).append(prop); 
} 

вопрос здесь, даже если Append функция находится в цикле. Только первый элемент отправляется в функцию callAdd. как показано ниже:

я есть 4 OBJ, реквизит:

obj=45183371 and prop=6 
obj=560488951 and prop=12 
obj=616516330 and prop=23 
obj=915329019 and prop=5 

, но только первая пара (OBJ = 45183371 и проп = 6) направляется к функции callAdd как Params ..

Просьба помочь ..

+0

Какой смысл иметь итератор 'i', если вы не используете его? Разве вам не нужно что-то использовать в строках 'obj [i]' где-нибудь? –

+0

Нужно проверить, проходите ли вы каждый раз с obj и поддерживаете функцию 'callAdd'. Можете ли вы вставить точный код, который вызывает вызов (и прохождение пара). Его трудно сказать с помощью всего этого кода. – techfoobar

+0

Рассчитывает глобальную переменную? Я бы предположил так из-за вашего комментария, что в этом случае число равно 21. Вы подумывали об использовании функции JQuery.каждый() вместо того, чтобы делать свой собственный цикл? – JonVD

ответ

0

Вы не имеете count определены, так что используйте i:

if (i > 0){ 
    callAdd(obj,prop); 
}; 
+0

хорошо .. кол-во определено в // делать что-то часть функции. –

+1

Нам нужно увидеть часть «сделать что-то» функции –

+0

obj = objEval.result [i] .uniquename; \t \t prop = objEval.result [i] .likes; –

0

что-то() обычно должен быть добавлен параметр, по-другому, как бы он функционировал? где он будет строить свою петлю? Глобальный var? Я не вижу один

+0

что-то имеет 2 параметра .. его на самом деле что-то (param1, param2) –

+0

Да, но вы не показали, что в вашем коде люди не могут просто гу что ваши параметры будут ... написать полный код, чтобы получить лучший эффект/ответ – Philip

0

Попробуйте это. Получить все объекты в массиве.

var objAry=new Array(); 

Получить все реквизиты в массиве.

var propsAry=new Array(); 

Теперь

function something() 
    { 
     var propsAry=new Array(); 
     var objAry=new Array(); 

     objAry= //Your objs 
     propsAry=//Your props 

     for(var i=0; i <= objAry. length; i++) 
     { 

      if (count > 0) 
      { 
       callAdd(objAry[i], propsAry[i]); 
      } 
     } 
    } 
0

Вы изменяете переменную вы в зависимости от (obj), чтобы ограничить управляющую переменную цикла (i). Когда вы переназначить obj внутри тела цикла:

obj = objEval.result[i].uniquename; 

Условие: захват петли

i <= obj.result.length 

будет ложен на следующей итерации. Внутри тела цикла создайте новую переменную вместо назначения чего-то нового obj.

В качестве альтернативы (или дополнительно), кэшировать число итераций вы хотите в переменной вместо:

var len = obj.result.length; 
for (var i = 0; i <= len; i++) { 
    // Do whatever you want to obj. 
}