如何访问iframe元素?
问题描述:
当你有这样一个页面通过所有的I帧的循环:如何访问iframe元素?
HTML:
<ul>
<li id="a"><iframe src="..." /></li>
<li id="b"><iframe src="..." /></li>
<li id="c"><iframe src="..." /></li>
</ul>
JS:
for (var i = 0; i < window.frames.length; i++) {
if (window.frames[i].getName() == selector) {
frame_item = ????
break;
}
}
我怎样才能为< IFRAME的DOM元素> ?或者按照这个例子,我如何获得循环内的< li>项的ID?
答
已更新回答。
window.frames直接引用IFRAME上下文(iframe的窗口对象)。 AFAIK你不能通过这种方式获得IFRAME对象。您可以通过window.frames [0] .myVar访问IFRAME的变量。
要获得所有IFRAME节点/对象使用:
var iframes = document.getElementsByTagName('iframe'); //all iframes on page
for(var i=0; i<iframes.length; i++){
alert(iframes[i].parentNode.id); // LI.id
alert(iframes[i].contentWindow.myVar); //iframe's context
}
或者你可以分配ID来UL元素和
var ul = document.getElementById('ul_id');
var iframes = ul.getElementsByTagName('iframe'); //all iframes in UL
...
答
我会强烈建议您使用jQuery JavaScript库在一般编写JavaScript,因为它使整个事情更容易,但特别是选择器,因为你可以使用CSS选择器。 因此,在这种情况下,你会使用
var id = [];
$("ul li").each(function(){
id.push($(this).attr("id"));
});
编辑
这是你需要什么?
$("iframe").each(
function(){
if($(this).attr("name")==desired_name)
alert($(this).parent());
}
);
window.frames [i] .parentNode未定义(Chrome) – Ivan
对不起,我的不好。它直接引用iframe的上下文。查看更新的答案。 –
亚历克斯托马斯同样的问题回答:我必须在子iframe上调用一个javascript函数。我不能相信子DOM结构或容器。 – Ivan