2011-12-27 67 views
0

我有一個下面的函數,我試圖追加一些東西。它在內部調用另一個函數,它不追加功能..jquery for loop問題

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

編輯

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

的問題是,即使追加函數是for循環..只有第一個元素被髮送到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 ..

PLS幫助..

+0

什麼是有一個迭代器'i'如果你不使用它的意義呢?你不需要在'obj [i]'的某個地方使用某些東西嗎? – 2011-12-27 04:51:10

+0

需要檢查的是每次是否將相同的obj和prop傳遞給'callAdd'函數。你可以粘貼確切的代碼來調用(和param傳遞)。很難用這麼多的代碼來說明。 – techfoobar 2011-12-27 04:54:15

+0

是一個全局變量嗎?由於你的評論,我認爲這個數字是21。你有沒有想過使用JQuery函數。每個()而不是自己的循環? – JonVD 2011-12-27 04:55:29

回答

0

你不必count定義,因此使用i

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

well .. count //在某些功能中定義.. – 2011-12-27 04:51:55

+1

我們需要看看函數中的「do something」部分 – 2011-12-27 04:55:17

+0

obj = objEval.result [i] .uniquename; \t \t prop = objEval.result [i] .likes; – 2011-12-27 05:05:40

0

東西()一般需要添加一個參數,其他方式如何起作用?它會在哪裏建立它的循環?全局變量?我沒有看到一個

+0

東西有2個參數..其實有些東西(參數1,參數2) – 2011-12-27 05:01:23

+0

是的,但你沒有在你的代碼中顯示,人們不能只是顧ess你的參數將會是什麼......編寫完整的代碼以獲得更好的效果/響應 – Philip 2011-12-27 05:12:05

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. 
}