Как получить доступ к объекту контекста в виде массива в обратном вызове PageMethods

StackOverflow https://stackoverflow.com/questions/406552

  •  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++) {
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top