通过帧通过ID查找后代元素

时间:2011-06-29 21:23:38

标签: javascript iframe

假设所有帧都在同一个域上,我需要从给定节点(或文档)开始,并搜索具有给定ID的元素。如果在当前文档中找不到它,我需要递归(广度优先)搜索所有后代iframe。

除非我遗漏了一些问题,否则我确信我可以编写这个函数,但我确信有人已经完成了它。

我不在我的应用程序中使用jQuery,所以尽管对于其他SO读者来说这很好,但它对我没有帮助。但是,我确实使用Prototype,并且可以假设所有后代iframe都包含原型。

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

我认为你可以像这样递归地得到它:

function findElement(wdw, id)
{
    var el = wdw.document.getElementById(id);
    if(el) return el;
    for(var i=0; i<wdw.frames.length; i++)
    {
        var el = findElement(wdw.frames[i].window, id);
        if(el) return el;
    }

    return null;
}

并将其称为:

findElement(window, "aa");

这里是jsFiddler链接:http://jsfiddle.net/QxL7z/2/