2010-02-28 9 views
0

Est-il possible de changer la valeur d'une variable globale en JavaScript?Variable globale JavaScript (changement de valeur)

Si oui, est-il possible de le faire dans une fonction appelée par un écouteur d'événement tel que "onreadyStateChange"?

Cela fonctionne pour les fonctions normales. mais ne change pas quand je l'appelle une fonction comme ceci:

<script.......> 
    var dom1 = 3; 

    function work() 
    { 
     ... 
     http.onreadyStateChange=handleHttpResponse; 
     ... 
    } 

    function handleHttpResponse() 
    { 
     var xd; 
     if (http.readyState == 4) 
     { 
      if (http.status == 200) 
      { 
       if (http.responseText == "granted") 
       { 
        dom1 = 1; 
       } 
       else 
       { 
        dom1 = 2; 
       } 
      } 
      else 
      { 
       alert("Error"); 
      } 
     } 
    } 
</script> 
+0

Oui, faites un essai. – Matthew

+1

J'essaie toujours d'être prudent lors de l'introduction de variables globales pour éviter les conflits avec le code existant ou futur, qu'essayez-vous de faire? – CMS

Répondre

6

Vous pouvez modifier la valeur d'une variable dans JS, local ou global. Dans une fonction, assurez-vous de ne pas déclarer une variable locale avec le même nom et vous pouvez accéder au global. Même si vous déclarez un local, vous pouvez accéder au global en tant que propriété de window. Vous pouvez également modifier la plupart des propriétés. Il y a très peu de types de données immuables dans JS ou DOM.

Si une variable n'est pas définie comme prévu, vous pouvez utiliser Firefox et firebug au code debug et observer ce qui se passe.

2

S'il vous plaît essayer:

<script type="text\javascript"> 
    var dom1 = 3; 

    function work() 
    { 
     ... 
     http.onreadyStateChange=handleHttpResponse; 
     ... 
    } 

    function handleHttpResponse() 
    { 
     var xd; 
     if (http.readyState == 4) 
     { 
      if (http.status == 200) 
      { 
       if (http.responseText == "granted") 
       { 
        *window['dom1']* = 1; 
       } 
       else 
       { 
        *window['dom1']* = 2; 
       } 
      } 
      else 
      { 
       alert("Error"); 
      } 
     } 
    } 
</script> 

Vous trouverez la valeur globale "dom1" est finalement changé!

4

Veuillez utiliser window ['dom1'] = xxx; au lieu de var dom1 = xxx;