2012-01-04 99 views
0

在我的ajax应用程序中,我试图使用一个递归函数,其中调用了另一个函数,它创建了一个全局变量,并且我想使用该变量在递归函数里面。但是,我遇到了麻烦,因为我无法在递归函数内部访问该全局变量(尽管如果我自己调用该函数,它是可用的)。下面是递归函数的代码。递归javascript/ajax函数:无法访问函数内设置的全局变量

ajaxCity.displayCell()设置一个window.cells []变量,它包含一个数组数组。这个想法是为每个数字调用tree()函数。

function tree (topCell) { 
    var ajaxCity = new Ajax(); 
    ajaxCity.displayCell(topCell); 

    for (var i = 0; i < window.cells[topCell].cKids.length; i++) { 
     tree(window.cells[topCell].cKids[i]); 
    } 
} 

的window.cells []变量可我运行函数一次,但我应该怎么改变的过程,这样它的作品比我想象的方式吗?

感谢您的帮助!

编辑:这是我得到的错误。

TypeError: window.cells[topCell] is undefined 

,如果我再次调用树的功能,它会为一个工作,“级别”更深,然后再给出错误等

============== ==

谢谢James Montagne,正如你所指出的,问题是我需要等待ajax请求回来。再次感谢!

回答

2

我正在这里基于变量名的一些假设,但我认为

ajaxCity.displayCell(topCell); 

会让Ajax调用,其结果将是window.cells...创建。

如果是这样,问题是AJAX是异步的(这是第一个A)。如果您发出AJAX请求,然后立即尝试使用该请求的结果,则不会找到结果。这是因为AJAX请求尚未返回。您需要改用AJAX请求的回调结果。

0
window.cells=new Array(); 

在全球范围内。