2009-01-02 57 views
0

我似乎无法使用循环上下文设置访问上下文对象:var context = [id1, id2, id3];如何访问上下文对象作为PageMethods回调数组

这个回调函数的工作原理:

function OnChangeSucceeded(result, context, methodName) { 
    document.getElementById(context[0]).disabled = result; 
    document.getElementById(context[1]).disabled = result; 
    document.getElementById(context[2]).disabled = result; 
} 

这个回调函数失败:

function OnChangeSucceeded(result, context, methodName) { 
     for(var indx = 0; indx < context.length; indx++) { 
      document.getElementById(context[indx]).disabled = result; 
     } 

    } 

回答

0

那对指针萤火tvanfosson。

我已经重做的功能,现在可为:

function OnChangeSucceeded(result, context, methodName) { 
    for (controlId in context) { 
     document.getElementById(context[controlId]).disabled = result; 
    } 
} 

我不知道是不是因为背景是原来创建为:

context = [id1, id2, id3]; 

,我现在已经有取代:

context = new Array(id1, id2, id3); 
0

查看调用代码以便我们可以看到您的上下文是如何建立的将会很方便。我猜测你已经将它设置为关联而不是数组,因此当你在回调中使用它时,没有长度属性(或者它是0)。

当将它设置它应该看起来像:

var context = new Array(); 
context[0] = 'elem0'; 
context[1] = 'elem1'; 
context[2] = 'elem2'; 

变种上下文= {0: 'elem0',1: 'elem1',2: 'elem2时'};

如果这不是问题,那么可以尝试在FireFox/FireBug中检查它,方法是在onChangeSucceeded函数中设置一个断点并检查实际的上下文对象以查看它具有的属性。

+0

调用PageMethods的函数将上下文参数设置为: var context = [id1,id2,id3]; 我已将其更改为: var context = new Array(id1,id2,id3); 但仍然得到相同的结果,我认为上下文参数作为一些其他对象传递给回调。 – HadleyHope 2009-01-02 13:40:02

0

是因为你的错字吗?

for(var index = 0; indx < context.length; indx++) { 

应该是

for(var indx = 0; indx < context.length; indx++) { 
+0

错字是由于我重写了函数而不是复制它。问题依然存在。 – HadleyHope 2009-01-02 13:29:42