如何在PageMethods回调中将上下文对象作为数组进行访问
-
03-07-2019 - |
题
我似乎无法使用循环上下文访问上下文对象: 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
这是指向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);
其他提示
看到调用代码会很方便,这样我们就可以看到你的上下文是如何建立的。我猜你已经将它设置为关联而不是数组,这样当你在回调中使用它时,就没有长度属性(或者它是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中检出它。
是不是因为你的错字?
for(var index = 0; indx < context.length; indx++) {
应该是
for(var indx = 0; indx < context.length; indx++) {
不隶属于 StackOverflow