如何在PageMethods回调中将上下文对象作为数组进行访问

时间:2009-01-02 11:36:59

标签: asp.net javascript callback

我似乎无法使用循环上下文访问上下文对象:var context = [id1, id2, id3];

此回调函数有效:

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

    }

3 个答案:

答案 0 :(得分:0)

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

设置时,它应如下所示:

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

var context = {0:'elem0',1:'elem1',2:'elem2'};

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

答案 1 :(得分:0)

是不是因为你的错字?

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

应该是

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

答案 2 :(得分:0)

这是指向firebug 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);