0

我似乎无法使用设置的循环上下文访问上下文对象: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;
        }

    }
4

3 回答 3

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 中检查它。

于 2009-01-02T11:53:32.747 回答
0

是因为你的错字吗?

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

应该

for(var indx = 0; indx < context.length; indx++) {
于 2009-01-02T12:48:36.787 回答
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);
于 2009-01-02T13:52:27.360 回答