2010-02-28 1 views
0

Возможно ли изменить значение глобальной переменной в JavaScript?Глобальная переменная JavaScript (изменяющееся значение)

Если это так, можно ли это сделать в функции, вызванной прослушивателем событий, например, «onreadyStateChange»?

Он работает для нормальных функций. но не меняется, когда я называю такую ​​функцию:

<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

Да, попробуйте. – Matthew

+1

Я всегда стараюсь быть осторожным при внедрении глобальных переменных, чтобы избежать конфликтов с существующим или будущим кодом, что вы пытаетесь сделать? – CMS

ответ

6

Вы можете изменить значение любой переменной в JS, локальной или глобальной. В функции убедитесь, что вы не объявляете локальную переменную с тем же именем, и вы можете получить доступ к глобальному. Даже если вы объявляете локальный, вы можете получить доступ к глобальному как свойство window. Вы также можете изменить большинство свойств; в JS или DOM существует очень мало неизменяемых типов данных.

Если переменная не настроена так, как вы ожидаете, вы можете использовать Firefox и firebug для кода debug и наблюдать за тем, что происходит.

2

Пожалуйста, попробуйте:

<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> 

Вы нашли бы глобальное значение "dom1" наконец-то изменилось!

4

Используйте окно ['dom1'] = xxx; вместо var dom1 = xxx;

 Смежные вопросы

  • Нет связанных вопросов^_^