项的ID?使用jquery从iframe中获取元素:
$(“iframe\u id\u或\u class”).contents().find(*element*)
更新
$("ul li").each(function(){
$("iframe", this).contents().find(*element*);
});
我强烈建议使用jqueryjavascript库来编写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直接引用IFRAME上下文(IFRAME的窗口对象)。恐怕您无法通过这种方式获得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
}
JQuery也是吗?很好,打电话给我的朋友;)好的,这很完美,但这不是问题:)我需要从循环中访问框架上下文。如果您知道内部iframe中的DOM结构,这也没关系,但我只能访问函数(任何iframe中的标准API),我使用Jquery,但我已将问题简化为javascript纯代码:)这里的问题不是选择器,将获取此循环内的ID。此循环将每个li
的ID推送到ID
arraywindow.frames[i]中。parentNode未定义(Chrome)抱歉,我的坏消息。它直接引用iframe的上下文。请参阅更新的答案。与Alex Thomas答案相同的问题:我必须在子iframe上调用javascript函数。我不能信任子DOM结构或容器。您不必信任DOM结构。document.getElementsByTagName是等同于window.frames的DOM。您将使用DOM对象(IFRAME)或通过ContWindow调用其函数。另一种情况是,如果不知道结构,则获取LIs ID,但仍然可以循环父元素以查找特定元素。
$("iframe").each(
function(){
if($(this).attr("name")==desired_name)
alert($(this).parent());
}
);
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
}
var ul = document.getElementById('ul_id');
var iframes = ul.getElementsByTagName('iframe'); //all iframes in UL
...