从其他框架集访问一个框架集中的元素

时间:2011-01-19 15:05:31

标签: javascript html frames

我有一个html页面,其中我有两个框架集,每个框架集指向不同的html。

现在让我们说,我在第一个框架集(html)中有一个文本框,在我的第二个框架集(html)中有一个按钮。

当我点击按钮时,有人可以告诉我如何隐藏文本框吗?

3 个答案:

答案 0 :(得分:1)

未经测试,但它应该是这样的(在你的按钮的onclick-handler中):

parent.frames[1].document.getElementByid('mytextfield').style.display = 'hidden';
//           ^^^ here you could also access the frame by its name using ['mysecondframe']

答案 1 :(得分:1)

只有当两个帧位于同一个域中时,才能执行上述所有操作。由于浏览器security policies,如果这些帧不在同一个域上,甚至在同一个协议上,它们就无法相互交互(javascript是不可能的)。

答案 2 :(得分:0)

您可以通过相关框架的getElementById对象上的document函数访问该元素(请注意,我们使用目标框架的document,而不是我们自己的框架)。您可以通过名称从框架集中获取框架 - 框架名称将成为框架集window对象的属性。

示例(live copy; button frame code):

var textbox = parent.targetFrame.document.getElementById('theTextBox');
textbox.value = "You clicked at " + new Date();

...其中targetFrame是目标框架的名称。您还可以使用frames[n],其中n是框架集中框架的索引,但我发现名称更加健壮。

以上示例已经过测试,适用于Linux和IE6的Firefox,Chrome和Opera - 因此应该适用于广泛的浏览器。