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 に答える