事件中的Javascript变量范围

时间:2010-10-18 07:24:14

标签: javascript events variables scope window

我有这个Web应用程序,用户可以填写并提交报告。报告和脚本是整个系统的一部分,也就是说,它们用于使用vb和c#编写的几个不同的客户端。这是这些客户的网络版本。

脚本语言是javascript,使用不同系统上的不同脚本引擎执行。但对于网络版,它只是在浏览器中执行。

可以通过输入以下内容来访问报告中的不同字段: ID1.value。要让ID1申请id ID为1的输入字段,我必须在页面的initfunction中写一个窗口[“ID1”] = document.getElementById(“ID1”);

但我的问题是这个元素何时发生变化。报告中的原因我有一个特殊元素,在浏览器中将其转换为每个单元格中包含报表字段的table-element。

当我切换当前行时,我需要更新窗口[“ID1”]以等于所选行上的正确报告字段。但是当尝试从按钮onclick事件访问新变量ID1时,它是未定义的。

我认为发生的事情是,首次绘制页面时会创建onclick事件,据我所知,事件中的变量与创建事件时的值相同(范围相同)。

因此,如果ID1.value是页面创建时的内容,即使ID1的值不同,它也会在调用时相同。似乎就是这种情况。当我调试页面时,在进入事件之前,ID1.value具有正确的值,而在事件内部它是未定义的,并且在事件之后它具有正确的值和ontop,如果我写窗口[“ID1”],正确在所有情况下也会显示值。

但奇怪的是,在代码中的另一个地方我遇到了同样的问题,但是我没有在onclick事件中使用代码,而是首先使用了一个全局函数changeActiveRow,而在其中我有一个eval,eval(document.getElementById) (“ID1_script”))其中ID1_script是一个隐藏元素,其值是使用ID1.value的脚本并且有效。

有人可以解释一下吗?

由于

0 个答案:

没有答案