更新url中的两个参数

时间:2015-10-11 16:41:29

标签: javascript jquery

如果传递的参数只有一个,则此代码正常工作。

但是当我传递两个参数时,className参数在第二次更改时没有更新,它添加了新的className参数。

这是变更功能的用武之地。

$('#classRoom').change(function(){
    var name = 'room_id';
    var value = $('#majorRoom').val();
    var className = 'room_type_id';
    var classValue = $('#classRoom').val();
    addOrUpdateUrlParam(name, value, className, classValue)
})

这是更新params的功能。

function addOrUpdateUrlParam(name, value, className, classValue)
    {
        var href = window.location.href;
        var regex = new RegExp("[&\\?]" + name + "=");
        var regex2 = new RegExp("[&\\?]" + className + "=");
        if(regex.test(href))
            {
                regex = new RegExp("([&\\?])" + name + "=\\d+");
                regex2 = new RegExp("([&\\?])" + className + "=\\d+");
                window.location.href = href.replace(regex, "$1" + name + "=" + value) + (regex2, "&" + className + "=" + classValue);
            }
        else
            {
                if(href.indexOf("?") > -1)
                  window.location.href = href + "&" + name + "=" + value + "&" + className + "=" + classValue;
                else
                  window.location.href = href + "?" + name + "=" + value + "&" + className + "=" + classValue;
            }
    }

请有人帮忙吗?

非常感谢提前!

第一个变化:

  'myweb.com/index.php?blabla=3&room_id=13&room_type_id=1835`

第二个变化:

  'myweb.com/index.php?blabla=3&room_id=13&room_type_id=1835$1room_type_id=1832`

1 个答案:

答案 0 :(得分:0)

我认为" g"调用RegExp()时缺少修饰符 例如,而不是:

.container1{ width:1100px; height:100%; clear:both; margin:auto;} .Review{ border:1px solid #000; list-style-type:none; padding:20px 30px 20px 50px;} .Comments{ list-style-type:none; text-align:justify; font-family:"Times New Roman", Times, serif; font-size:18px; padding-top:10px;} .Review1{ border:1px solid #000; list-style-type:none; padding:20px 30px 20px 50px;}

应该是:

regex = new RegExp("([&\\?])" + name + "=\\d+");

默认情况下,只会影响第一次发生。随着" g"你告诉RegExp全局应用于所有匹配的修饰符。