2011-12-27 70 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. 
}