0

我有一组我想在页面上找到的链接,但只有当 href 包含单词“PlaySounds”时,我尝试了以下代码,但我没有定义。

    http://www.website.com/uno/PlaySounds.aspx?Id=546444456
    http://www.website.com/uno/PlaySounds.aspx?Id=347457458
    http://www.website.com/uno/PlaySounds.aspx?Id=275656573
    http://www.website.com/uno/PlaySounds.aspx?Id=976645654

    hrefs = Array.prototype.filter.call(document.getElementsByTagName("a"), function(node) { 
            return node.href.indexOf("PlaySounds") === 0;
        }).map(function(node) {
            return node.href;
        });

randomHref = hrefs[Math.floor(Math.random() * hrefs.length)];

    console.log(randomHref );
4

2 回答 2

1

Array.indexOf 返回您正在搜索的子字符串的起始位置,如果未找到,则返回 -1。

尝试改变

node.href.indexOf("PlaySounds") === 0;

node.href.indexOf("PlaySounds") >= 0;

编辑:使用此功能对其进行测试

function randomHref() {
    hrefs = Array.prototype.filter.call(document.getElementsByTagName("a"), function(node) { 
        return node.href.indexOf("PlaySounds") >= 0;
    }).map(function(node) {
        return node.href;
    });
    return hrefs[Math.floor(Math.random() * hrefs.length)];
}

在这些链接上:

<a href="http://www.website.com/uno/PlaySounds.aspx?Id=2">asd</a>
<a href="http://www.website.com/uno/PlaySounds.aspx?Id=4">asd</a>
<a href="http://www.website.com/uno/PlaySounds.aspx?Id=1">asd</a>
<a href="http://www.website.com/uno/PlaySounds.aspx?Id=3">asd</a>
于 2012-07-21T17:43:18.857 回答
0

为什么 === 0

hrefs = Array.prototype.filter.call(document.getElementsByTagName("a"), function(node) { 
        return node.href.indexOf("PlaySounds") !== -1;
    }).map(function(node) {
        return node.href;
    });

randomHref = hrefs[Math.floor(Math.random() * hrefs.length)];

console.log(randomHref );
于 2012-07-21T17:49:35.917 回答