Comment accéder à l'objet de contexte en tant que tableau dans le rappel PageMethods

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

  •  03-07-2019
  •  | 
  •  

Question

Je ne semble pas pouvoir accéder à l'objet de contexte à l'aide d'une boucle. Le contexte est défini: var contexte = [id1, id2, id3];

.

Cette fonction de rappel fonctionne:

function OnChangeSucceeded(result, context, methodName) {
    document.getElementById(context[0]).disabled = result;
    document.getElementById(context[1]).disabled = result;
    document.getElementById(context[2]).disabled = result;
}

Cette fonction de rappel échoue:

function OnChangeSucceeded(result, context, methodName) {
        for(var indx = 0; indx < context.length; indx++) {
           document.getElementById(context[indx]).disabled = result;
        }

    }
Était-ce utile?

La solution 3

C’est le pointeur de Firebug tvanfosson.

J'ai refait la fonction et cela fonctionne maintenant comme:

function OnChangeSucceeded(result, context, methodName) {
    for (controlId in context) {
        document.getElementById(context[controlId]).disabled = result;
    }
}

Je ne sais pas si c'est parce que le contexte a été créé initialement en tant que:

context = [id1, id2, id3];

que j'ai maintenant remplacé par:

context = new Array(id1, id2, id3);

Autres conseils

Il serait pratique de voir le code d'appel afin que nous puissions voir comment votre contexte est établi. Je vais deviner que vous l'avez configurée comme une association et non comme un tableau, de sorte que lorsque vous l'utilisez dans le rappel, il n'y a pas de propriété de longueur (ou c'est 0).

Lorsque vous le configurez, il devrait ressembler à:

var context = new Array();
context[0] = 'elem0';
context[1] = 'elem1';
context[2] = 'elem2';

pas

var context = {0: 'elem0', 1: 'elem1', 2: 'elem2'};

Si ce n'est pas le problème, essayez de le vérifier dans FireFox / FireBug en définissant un point d'arrêt dans la fonction onChangeSucceeded et en examinant l'objet de contexte réel pour voir quelles propriétés il possède.

Est-ce à cause de votre faute de frappe?

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

devrait être

for(var indx = 0; indx < context.length; indx++) {
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top