如何从子javascript页面访问父iframe元素?

如何从子javascript页面访问父iframe元素?,javascript,iframe,Javascript,Iframe,我有两页:父母和孩子 在父页面中,我有一个iframe,我想在子页面的JavaScript中获取它的值。有什么办法吗?…请建议。您可以使用 window.parent.getElementById('YOUR ID').value(); 要从父元素获取id为“YOUR id”的输入元素的值,请使用 parent.getElementById('elementId').value; 获取元素。如果有多个嵌套iframe,则可以使用 top.getElementById('elementId')

我有两页:父母和孩子

在父页面中,我有一个iframe,我想在子页面的JavaScript中获取它的值。有什么办法吗?…请建议。

您可以使用

window.parent.getElementById('YOUR ID').value();
要从父元素获取id为“YOUR id”的输入元素的值,请使用

parent.getElementById('elementId').value;
获取元素。如果有多个嵌套iframe,则可以使用

top.getElementById('elementId').value;

这两种方法都适用于您的情况。

尝试为您的iframe命名,然后像这样访问iframe

window.parent.<iframe_name>.document.getElementById()
window.parent..document.getElementById()

假设您的页面和框架结构如下

parent (contains iframe) |--> child page (attempts to access iframe in parent) 或者简单地从包含iframe的父级执行以下操作

frames['iFrame'].document.getElementById('iFrameElement').value;
由于帧名称在运行时是不确定的,因此可以恢复为在window.frames数组中使用帧编号,如下所示(从子帧)

还是从父母那里

//assuming frames[0] refers to the iframe
window.frames[0].document.getElementById('iFrameElement').value;

您可以通过以下方式从iframe内部获取父级文档中的iframe元素:

var iframe = parent.document.getElementById(window.frameElement.id);

实际上只需要
iframelement

从子文档内部:

 var iframe = frameElement;

你已经完成了。

谢谢克里斯汀的建议。但我也试过用同样的方法。它返回“未定义”。通过使用您的解决方案,我能够获取父页面中所有元素的值,但不能获取iframe中的元素的值。在使用iframe时,是否有其他方法获取值?请求分享你的知识。我还没有测试过这一点,但我想应该是这样做的。window.parent.frames['iframe\u name'].getElementById('element id').value;当然,“iframe_name”是调用方的名称。也许您需要在之前添加.document.getElementById(),谢谢Cory的建议。但我也试过用同样的方法。它返回“未定义”。通过使用您的解决方案,我能够获取父页面中所有元素的值,但不能获取iframe中的元素的值。在使用iframe时,是否有其他方法获取值?请求分享您的知识。非常感谢Vinet的建议。我的page n frame结构是--parent(包含iframe)|-->子页面javascript尝试访问parent中的iframe。在我的例子中,每次加载页面时都会动态生成父对象中的iFrame name n id。那么如何处理这种情况呢?请您分享您的知识。您可以将框架名称和id传递给孩子,也可以避免按名称引用框架,而是按框架编号引用。谢谢Vinet。我将尝试实现这一点,并让你知道它是否有效。非常感谢你的建议。我的page n frame结构是--parent(包含iframe)|-->子页面javascript尝试访问parent中的iframe。在我的例子中,每次加载页面时都会动态生成父对象中的iFrame name n id。那么如何处理这种情况呢?请你分享你的知识。你的父母和孩子在同一个领域吗?跨站点域策略不允许javascript在不在同一域的情况下在它们之间进行对话。你真漂亮!除您的建议外,其他所有内容都返回“未定义”。实际上,它是“window.frameElement”,但绝不是一个不太好的答案。。。
var iframe = parent.document.getElementById(window.frameElement.id);
 var iframe = frameElement;