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