全局变量JavaScript(更改值)

时间:2010-02-28 04:28:21

标签: javascript global-variables variable-assignment

是否可以在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>

3 个答案:

答案 0 :(得分:7)

您可以更改JS,本地或全局变量的值。在函数中,请确保不声明具有相同名称的局部变量,并且可以访问全局变量。即使您确实声明了本地,也可以将全局作为window的属性进行访问。您也可以更改大多数属性; JS或DOM中的不可变数据类型非常少。

如果未按预期设置变量,则可以使用Firefox和firebug debug代码并观察发生的情况。

答案 1 :(得分:4)

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

答案 2 :(得分: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”终于改变了!