javascript在同一渲染屏幕上显示多个表单

javascript在同一渲染屏幕上显示多个表单,javascript,Javascript,我正在使用经典ASP 我有一个2包含,上面有两种不同的形式。它们在名称上都是独一无二的。然而,当我试图读取第二种形式的元素的值时,我得到一个错误,它是空的。然而,当我在Firebug中查看源代码时,我可以看到在face中该元素中有一个值 我的javascript代码: console.log(document.getElementById('focusValue').value); firebug的输出: <input id="focusValue" type="hidden" valu

我正在使用经典ASP

我有一个2包含,上面有两种不同的形式。它们在名称上都是独一无二的。然而,当我试图读取第二种形式的元素的值时,我得到一个错误,它是空的。然而,当我在Firebug中查看源代码时,我可以看到在face中该元素中有一个值

我的javascript代码:

console.log(document.getElementById('focusValue').value);
firebug的输出:

<input id="focusValue" type="hidden" value="1006" name="focusValue">


因为这个“渲染”屏幕上有两个表单,所以我需要做些什么吗?我认为我应该提到的另一件事是,这些页面位于iFrame中。不确定这是否真的重要…

无法查看您的页面,因此很难调试。假设脚本在表单之后运行。我唯一能想到的是页面上有不止一个id为“focusValue”的元素


当您
console.log(document.getElementById('focusValue'))

一个iFrame在包含的文档中创建一个单独的文档时会发生什么情况,您需要先获取对该文档的引用,然后才能访问其内容。这里有一个合理的教程

如果页面中只有一个iFrame,则可以通过以下方式引用它:

var frame = window.frames[0];
或者可以将id与getElementById一起使用。要获取对文档的引用,请执行以下操作:

var doc;
if (frame) {
  doc = frame.contentDocument || frame.contentWindow.document;
}
现在您可以进入输入元素:

var input = doc && doc.getElementById('focusValue');

当然,这一切都取决于您是否遵守相同的原始策略,否则您将无法访问框架内容。

您可以使用“document.formname.focusValue.value”访问它吗?我得到document.getElementById('focusValue')为空谢谢您的回答。。。我试着按照你的建议去做,但我遇到了一个错误:frame.contentWindow未定义(我也发现frame.contentDocument也未定义)。当我提醒“frame”变量看起来正确时,我会这么说。你还有别的建议吗?我不知道你是怎么搞不清楚的。如果代码违反了相同的域规则,则表示您无权访问该内容,并应获得相关错误。如果iFrame没有src属性,那么将有一个contentWindow对象(为空)。如果属性具有无效URL,则根据浏览器的不同,您可能会或可能不会出现访问错误。但不是“未定义”。你需要发布HTML。