首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript替换基于query-string的链接的自定义ID

使用javascript替换基于query-string的链接的自定义ID
EN

Stack Overflow用户
提问于 2011-11-09 10:07:58
回答 1查看 166关注 0票数 0

如果当前页面的URL在查询字符串中有一个参数'myid1‘,对于我的网页中的每个带有'rewrite’类的链接,我希望链接href的查询字符串被当前页面URL的查询字符串替换。

我使用了以下代码:

代码语言:javascript
复制
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>

<script type="text/javascript">
            $(function() {
                var requestid = new String(gup('myid1'));
                if (requestid!=null&&requestid!="") {
                $("a.rewrite").each(function() {
                    var href = $(this).attr("href");
                    href += "?myid1=" + requestid;
                    $(this).attr("href", href);
                 })
               }
            })
            //gup taken from here:http://www.netlobo.com/url_query_string_javascript.html
            function gup(name) {
                name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
                var regexS = "[\\?&]" + name + "=([^&#]*)";
                var regex = new RegExp(regexS);
                var results = regex.exec(window.location.href);
                if (results == null)
                    return "";
                else
                    return results[1];
            }
</script>

<a href="http://www.otherdomain.com?someid=1234" class="rewrite">Hyperlink</a>

问题是,URS的查询字符串被添加到链接中,而没有删除现有的查询字符串。如何修复它?

另外,我如何再允许一个名为'myid2‘的参数。提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-09 10:13:33

您可以使用以下命令删除前置查询字符串:

代码语言:javascript
复制
$(function() {
    var requestid = gup('myid1');
    if (requestid) {
        $("a.rewrite").each(function() {
            var base = this.href;
            var pos = base.indexOf("?");
            if (pos != -1) {
                base = base.substr(0, pos);
            }
            this.href = base + "?myid1=" + requestid;
        })
    }
})

在此版本中需要注意的几点:

  1. if (requestid)测试nullundefined"",因此您可以只使用一个Test.
  2. 不需要使用jQuery对象来访问href属性。只使用this.href.

更快、更直接

如果你想要更少的代码行(虽然不是很快),你可以这样做:

代码语言:javascript
复制
$(function() {
    var requestid = gup('myid1');
    if (requestid) {
        $("a.rewrite").each(function() {
            this.href = this.href.replace(/\?.*$/, "") + "?myid1=" + requestid;
        })
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8059581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档