在我的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请求回来。再次感谢!
答案 0 :(得分:2)
我在这里根据变量名做了一些假设,但我认为是
ajaxCity.displayCell(topCell);
将进行ajax调用,其结果将是window.cells...
的创建。
如果是这种情况,问题是AJAX是异步的(那是第一个A)。如果您发出AJAX请求,然后立即尝试使用该请求的结果,则无法找到结果。这是因为AJAX请求尚未返回。您需要在AJAX请求的回调中使用结果。
答案 1 :(得分:0)
window.cells=new Array();
在全球范围内。