2010-08-23 1 views
0

Je ne suis pas très bon avec javascript et j'espère que vous êtes plus dur que moi. Voici mon problème: J'utilise le cadre de MicrosoftAjax.cs et j'utilise des classes comme celui-ci:Appel à la fonction javascript ne pas passer les variables de classe

MyClass = 
{ 
teststring:null, 
$constructor: function(test){ 
teststring = "test"; 
}, 
GetInformationFromName : function(inputname, BeginningSeparator, EndSeparator) { 
    alert(BeginningSeparator); 
    alert(EndSeparator); 
}, 
GetId: function(inputname) { 
      return MyClass.GetInformationFromName(inputname,MyClass.teststring, "???"); 
     } 
} 

Il est une fonction assez simple où je veux juste extraire des informations à partir d'un nom donné dans GetId().

Mon problème est que dans GetPerId je peux voir (dans le débogueur de Visual Studio) la valeur de MyClass.teststring. Mais quand je débogue dans l'appel de la fonction et j'arrive dans GetInformationFromName, la valeur passée dans le paramètre est nulle, alors qu'une valeur "normale" ne cause aucun problème.

exemple concret de ce qui se passe (ce que je peux voir): -> GetId ("toto") -> MyClass.GetInformationFromName ("toto", "&", "???"); -> GetInformationFromName (toto », null, "???")

Auriez-vous allusion à ce sujet

Répondre

1

Vous n'êtes pas mise teststring correctement dans votre constructeur Remarquez comment, partout ailleurs, quand?. appelant les variables de classe et les méthodes que vous devez utiliser MyClass.methodname ou MyClass.variablename? dans votre constructeur, vous venez de teststring="test" quand vous devez installerez MyClass.teststring="test" pour remplacer la valeur par défaut de null.

je ne vois pas une méthode GetPerId dans votre code extrait, donc je ne peux pas expliquer pourquoi VS affiche le valeur correcte là, mais je peux vous dire que votre constructeur est en train de définir une variable locale de teststring et vous passez une variable globale lorsque vous appelez GetInformationFromName en GetID.

En outre, je ne peux pas voir si et quand vous appelez $constructor de toute façon ... donc je ne suis pas sûr à 100% que vous définissez même la variable locale teststring.

+0

Thx vous EAMann! – Arthis

0

thkx pour tous ceux qui partagent une pensée sur celui-ci, j'ai trouvé mon erreur. Je devrais avoir utiliser le constructeur comme ceci:

$constructor: function(test){ 
MyClass.teststring = "test"; 
} 

désolé pour la peine, il aide quelqu'un l'espoir un jour ...

Questions connexes