Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript替换基于查询字符串的链接的自定义ID_Javascript_Jquery_Html_Css_Url Rewriting - Fatal编程技术网

使用javascript替换基于查询字符串的链接的自定义ID

使用javascript替换基于查询字符串的链接的自定义ID,javascript,jquery,html,css,url-rewriting,Javascript,Jquery,Html,Css,Url Rewriting,如果当前页面URL的查询字符串中有一个参数“myid1”,则对于我的网页中具有类“rewrite”的每个链接,我希望链接href的查询字符串替换为当前页面URL的查询字符串 我正在使用以下代码: <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script> <script type="text/javas

如果当前页面URL的查询字符串中有一个参数“myid1”,则对于我的网页中具有类“rewrite”的每个链接,我希望链接href的查询字符串替换为当前页面URL的查询字符串

我正在使用以下代码:

<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>

$(函数(){
var requestid=新字符串(gup('myid1');
if(requestid!=null&&requestid!=“”){
$(“a.rewrite”)。每个(函数(){
var href=$(this.attr(“href”);
href+=“?myid1=“+requestid;
$(this.attr(“href”,href);
})
}
})
//从这里开始:http://www.netlobo.com/url_query_string_javascript.html
功能gup(名称){
名称=名称。替换(/[\[]/,“\\\[”)。替换(/[\]]/,“\\\]”);
var regexS=“[\\?&]”+name+“=([^&\\]*)”;
var regex=新的RegExp(regexS);
var results=regex.exec(window.location.href);
如果(结果==null)
返回“”;
其他的
返回结果[1];
}
问题是URS的查询字符串被添加到链接中,而没有删除现有的查询字符串。如何修复它


另外,如何允许另一个名为“myid2”的参数。提前感谢您的帮助。

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

$(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;
        })
    }
})
本修订版中需要注意的几点:

  • if(requestid)
    测试
    null
    undefined
    ,因此您可以只使用一个测试
  • 无需使用jQuery对象访问
    href
    属性。只需使用
    this.href
    即可更快更直接
  • 如果您喜欢更少的代码行(虽然没有那么快),您可以这样做:

    $(function() {
        var requestid = gup('myid1');
        if (requestid) {
            $("a.rewrite").each(function() {
                this.href = this.href.replace(/\?.*$/, "") + "?myid1=" + requestid;
            })
        }
    })
    

    我不理解问题的第二部分关于
    myid2
    @jfriend00我想添加另一个查询参数(myid2),它应该与myid1完全相同。我仍然不理解。将所有现有查询参数替换为
    myid1
    。您想将myid2放在哪里?例如,如果我们转到test.html?myid2=9876,超链接应该更改为。现在这种变化只发生在myid1上。我希望它也发生在myid2上。@starryyes-那是因为您对requestid的测试不起作用。我在回答中删除了
    新字符串()
    ,现在应该可以让
    if(requestid)
    正常工作了。太棒了!非常感谢jfriend00:)我喜欢更少的代码行,但是为什么你说它比第一行慢?@starryyes-正则表达式几乎总是比直接字符串操作慢。通常情况下,性能差异并不重要,但当速度确实重要并且很容易避免使用正则表达式操作时,您应该这样做。