Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 更新url中的两个参数_Javascript_Jquery - Fatal编程技术网

Javascript 更新url中的两个参数

Javascript 更新url中的两个参数,javascript,jquery,Javascript,Jquery,如果传递的参数只有一个,则此代码有效 但是当我传递两个参数时,className参数在第二次更改时没有更新,它添加了新的className参数 这就是change函数的作用 $('#classRoom').change(function(){ var name = 'room_id'; var value = $('#majorRoom').val(); var className = 'room_type_id'; var classValue = $('#cl

如果传递的参数只有一个,则此代码有效

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

这就是change函数的作用

$('#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)
})
这是更新参数的函数

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`
我认为调用RegExp()时缺少“g”修饰符 例如,而不是:

regex=newregexp(([&\\?])“+name+”=\\d+”

应该是:

regex=newregexp(“([&\\?]”“+name+”=\\d+”,“g”)


默认情况下,只影响第一次出现。使用“g”修饰符,您可以告诉RegExp全局应用于所有匹配项。

为了避免各种regex代码的复杂性,您可以只向我们显示有效的最终url和无效的最终url。请查看我的上次更新。您希望在上次url中添加$符号吗。想必你想要的是一个&。不,我想要的只是&然后我建议你放弃正则表达式逻辑,简单地用字符串连接来构造你的URL。