Как получить доступ к объекту контекста в виде массива в обратном вызове PageMethods
-
03-07-2019 - |
Вопрос
Кажется, я не могу получить доступ к объекту context, используя цикл context is set: 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);
Другие советы
Было бы удобно просмотреть вызывающий код, чтобы мы могли видеть, как устанавливается ваш контекст.Я собираюсь предположить, что вы настроили его как ассоциацию, а не как массив, так что, когда вы собираетесь использовать его в обратном вызове, свойства length нет (или оно равно 0).
Когда вы его настроите, он должен выглядеть следующим образом:
var context = new Array();
context[0] = 'elem0';
context[1] = 'elem1';
context[2] = 'elem2';
нет
var context = { 0:'элемент0', 1:"элемент1", 2:'элемент2' };
Если проблема не в этом, попробуйте проверить это в FireFox / FireBug, установив точку останова в функции onChangeSucceeded и изучив фактический контекстный объект, чтобы увидеть, какими свойствами он обладает.
Это из-за вашей опечатки?
for(var index = 0; indx < context.length; indx++) {
должно быть
for(var indx = 0; indx < context.length; indx++) {