如何在JavaScript中选择此元素?

时间:2013-02-11 20:40:43

标签: javascript

我无法修改以下html:

<iframe src="http://google.com/foo" width="600" height="338" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe>
<div style="padding:5px 0; text-align:center; width:600px;"><p>
<a href="http://www.foobar.com/lol/wut">Some Link</a></p></div>

我需要定位这个元素:

<a href="http://www.foobar.com/lol/wut">Some Link</a>

要求是:

由于我无法编辑html,我不能简单地添加id并使用document.getElementById。那么如何使用普通的js来定位链接?

3 个答案:

答案 0 :(得分:2)

查看selectors,特别是属性选择器和兄弟组合器:

iframe[src^="http://google.com"] ~ a

您可以在jQuery选择器表达式或document.querySelector中轻松使用它。

答案 1 :(得分:1)

function aSrcAfterIFrame(document) {
    var elements, result, looking, item, tagName, i, n;
    elements = document.getElementsByTagName('*');
    looking = false;
    for (i = 0, n = elements.length; i < n; i++) {
        item = elements[i];
        tagName = item.tagName.toLowerCase();
        if (looking && tagName === 'a') {
            result = item.href;
            break;
        }   
        if (tagName === 'iframe') {
            if (item.src.indexOf('http://google.com/foo') === 0) {
                looking = true;
            }   
        }   
    }   
    return result;
}

aSrcAfterIFrame(document);
"http://www.foobar.com/lol/wut"

答案 2 :(得分:0)

阅读编辑。

未经测试,但假设您正在使用类似这样的jQuery应该可以解决问题。

var link = null;
$('iframe:first').siblings().each(function() {
    if (link !== null) return;
    if ($(this).attr('href') && $(this).attr('href').search('http://www.google.com') > -1) {
        link = $(this);
    }
});

不是最好的解决方案,但我觉得这是一个奇怪的场景。

编辑:如果贝尔吉斯选择器使用它。花哨的东西,我刚刚学到了一些东西。

编辑2:我还注意到你想检查iframe src而不是链接源,所以我的帖子基本上都是错误的。