javascript在同一个呈现的屏幕上的多个窗体

问题描述:

我正在使用经典的ASP。javascript在同一个呈现的屏幕上的多个窗体

我有一个2包含有2种不同的形式。他们的名字都是独一无二的。但是,当我尝试读取第二个窗体中的元素的值时,我得到一个错误,表示它为空。但是,当我在Firebug中查看源代码时,我可以看到,面对这个元素是有价值的。

我的javascript代码:从萤火

console.log(document.getElementById('focusValue').value); 

输出:

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

有什么我需要做的,因为有这个 “渲染” 屏幕上2种形式?我认为我应该提到的另一件事是这些页面在iFrame中。不知道这是否真的很重要...

+0

你能用“document.formname.focusValue.value”访问它吗? – dkretz

一个iframe包含文档中创建一个单独的文件,会发生什么,你需要获得该文件的引用,然后才能访问其内容。在http://www.dyn-web.com/tutorials/iframes/有一个合理的教程。

如果你只有在一个页面的iFrame,那么你可以通过引用它:

var frame = window.frames[0]; 

或者你可以使用一个id与的getElementById。要进入该文档的参考:

var doc; 
if (frame) { 
    doc = frame.contentDocument || frame.contentWindow.document; 
} 

现在您可以在输入元素:

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

当然,这一切都取决于你用相同的起源政策不符的,否则你无法访问框架内容。

+0

谢谢你的回答...我试着做你的建议,但我得到一个错误:frame.contentWindow是未定义的(我也走了框架。 contentDocument也是未定义的)。我会说,当我警告看起来正确的“框架”变量。你有什么其他的建议? – webdad3

+0

我不知道你如何得到undefined。如果代码违反了相同的域规则,则您无权访问该内容并应该得到相关的错误。如果iFrame没有src属性,那么会有一个* contentWindow *对象(它是空的)。如果该属性具有无效的URL,则根据浏览器的不同,您可能会也可能不会收到访问错误。但不是“未定义”。你需要发布HTML。 – RobG

看不到你的页面,所以很难调试。假设脚本在表单之后运行。我唯一能想到的是页面上有多个元素,其ID为“focusValue”。

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

+0

我得到document.getElementById('focusValue')为空 – webdad3