在链接末尾添加变量(仅限REL-attr)

时间:2011-10-22 15:21:10

标签: javascript parameters hyperlink append

我希望有人可以帮助我...我尝试抓取一个参数,保存在html网站的头部,并将此参数添加到网站上的所有链接,没有“rel ='gallery ““-attribut。一些链接已经具有其他GET参数。它看起来像这样:

<head>
<script type="text/javascript">
    var ParameterNew = "test";
</script>
</head>
[...]
Search: <a href="http://google.com">Google</a><br/>
Social Media: <a href="http://facebook.com?show=start">Facebook</a>
<br/><br/>
<a rel="gallery" href="img/1.jpg">Gallery Link 1</a><br/>
<a rel="gallery" href="img/2.jpg">Gallery Link 2</a><br/>

所以我尝试将ParameterNew附加到所有没有rel-attribut的链接后面。

最后,它必须看起来像这样:

<head>
<script type="text/javascript">
    var ParameterNew = "test";
</script>
</head>
[...]
Search: <a href="http://google.com?parameter=test">Google</a><br/>
Social Media: <a href="http://facebook.com?show=start&parameter=test">Facebook</a>
<br/><br/>
<a rel="gallery" href="img/1.jpg">Gallery Link 1</a><br/>
<a rel="gallery" href="img/2.jpg">Gallery Link 2</a><br/>

我写了这个。它只替换innerHTML(例如一个例子):

var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
    if (links[i].target !== "_blank")
        links[i].innerHTML = 'test';
}

我只有附加参数的问题......也许有人可以提供帮助?感谢名单

1 个答案:

答案 0 :(得分:1)

这是一个相当简单的解决方案,它考虑了您的确切示例条件。也就是说,它假设您有简单的链接,因此需要做的就是检查添加参数时使用的连接器。如果您的链接可以包含链接参数,则需要执行更复杂的操作,以确定是使用?还是&来附加参数。

var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
    if (links[i].rel != 'gallery') {
        var href = links[i].href,
            connector = '?';
        if (href && href.match(/\?/)) {
           connector = '&';
        }
        links[i].href = href + connector + 'parameter=' + ParameterNew;
    }
}