是否可以在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 :(得分:7)
您可以更改JS,本地或全局变量的值。在函数中,请确保不声明具有相同名称的局部变量,并且可以访问全局变量。即使您确实声明了本地,也可以将全局作为window
的属性进行访问。您也可以更改大多数属性; JS或DOM中的不可变数据类型非常少。
答案 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”终于改变了!