2010-02-28 120 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 2010-02-28 04:43:40

+1

在引入全局变量以避免与现有或未来代码发生冲突时,我总是尽量保持谨慎,您想做什么? – CMS 2010-02-28 04:50:43

回答

6

您可以更改JS,local或global中任何变量的值。在一个函数中,确保你不要声明一个具有相同名字的局部变量,并且你可以访问全局变量。即使您声明本地,您也可以作为window的财产访问全球。您也可以更改大多数属性; JS或DOM中有很少不可变的数据类型。

如果未按照您的设置设置变量,则可以使用Firefox和firebugdebug代码并观察发生了什么。

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

请使用window ['dom1'] = xxx;而不是var dom1 = xxx;