Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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,2类参数:尺寸和价格。目前,我可以单击选择/突出显示“尺寸”列中的一个,也可以单击“价格”列中的一个,而不影响另一个 单击某个大小时,会添加URL参数size=4。 单击另一个大小将替换当前URL参数为size=5或size=6 单击价格时,会添加参数pmin=30&pmax=40。 单击另一个价格将用pmin=40&pmax=50或 问题是它还替换了size参数 问题: 如何将这两种类型的参数组合在一个URL中,其中一个以开头,另一个以&开头,而不替换另一个 目标URL参数: example.

2类参数:尺寸和价格。目前,我可以单击选择/突出显示“尺寸”列中的一个,也可以单击“价格”列中的一个,而不影响另一个

单击某个大小时,会添加URL参数size=4。 单击另一个大小将替换当前URL参数为size=5或size=6

单击价格时,会添加参数pmin=30&pmax=40。 单击另一个价格将用pmin=40&pmax=50或

问题是它还替换了size参数

问题:

如何将这两种类型的参数组合在一个URL中,其中一个以开头,另一个以&开头,而不替换另一个

目标URL参数:

example.com/#size=5&pmin=40&pmax=50 
or 
example.com/#pmin=40&pmax=50&size=5 
我有这个=>中的代码,但是URL和参数没有显示。必须在本地或以任何方式重新创建,以便显示参数

HTML:

CSS:

JS/JQuery:

<script type="text/javascript">
    $(document).ready( function() {
        $(".inDivSize").click(function() {
            $(".inDivSize").removeClass("inDivSizeClicked");
            $(this).addClass("inDivSizeClicked");
        });
        $(".inDivPrice").click(function() {
            $(".inDivPrice").removeClass("inDivPriceClicked");
            $(this).addClass("inDivPriceClicked");
        });
    });
</script>

提前感谢,您可以尝试钩住size元素的click事件

$(".sizes").click(function(e) {
        var psize = $(this).attr('psize');
        $('.prices').each(function() {
            var priceParam = $(this).attr('href');
            $(this).attr('href', priceParam.indexOf('size=') === -1 ? (priceParam + '&size=' + psize) : priceParam.replace(/size=\d/,  'size='+ psize));
        });
    });

$('.prices').click(function() {
        var priceParam = $(this).attr('href');
        console.log(priceParam);
            $('.sizes').each(function() {
                var psize = $(this).attr('psize');
                $(this).attr('href', priceParam.indexOf('size=') === -1 ? (priceParam + '&size=' + psize) : priceParam.replace(/size=\d/, 'size=' + psize));
            });
    });
在documentready中添加此代码 我还修改了divContainer,添加了一个psize属性,这样我仍然可以确定a元素对应的大小

<div class="divContainer">
    <div>Sizes</div>
    <a class="sizes" href="#size=4" psize="4" border="0">
        <div class="inDivSize">4</div>
    </a>
    <a class="sizes" href="#size=5" psize="5" border="0">
        <div class="inDivSize">5</div>
    </a>
    <a class="sizes" href="#size=6" psize="6" border="0">
        <div class="inDivSize">6</div>
    </a>
</div>     

希望这有帮助。

你好,道坦。这是我需要的正确实现。然而,还有一件小事,也许你仍然可以解决。两种类型的参数组合在一起。但当我单击一个新的尺寸时,price参数被重置或再次消失。价格参数能否保持可见?即使我点击了一个新的尺寸?嗨,Philcyb。我修改了我的答案,希望这会有所帮助。我还制作了小提琴供你们检查。非常感谢你!它正按我的需要完美地工作。尤其是小提琴。我会考虑这个问题的。谢谢。很高兴能为您提供帮助再次感谢您的解决方案。我试图改变URL参数的位置,即在价格之前先使用大小。类似这样:大小=6&pmin=50&pmax=60
<script type="text/javascript">
    $(document).ready( function() {
        $(".inDivSize").click(function() {
            $(".inDivSize").removeClass("inDivSizeClicked");
            $(this).addClass("inDivSizeClicked");
        });
        $(".inDivPrice").click(function() {
            $(".inDivPrice").removeClass("inDivPriceClicked");
            $(this).addClass("inDivPriceClicked");
        });
    });
</script>
$(".sizes").click(function(e) {
        var psize = $(this).attr('psize');
        $('.prices').each(function() {
            var priceParam = $(this).attr('href');
            $(this).attr('href', priceParam.indexOf('size=') === -1 ? (priceParam + '&size=' + psize) : priceParam.replace(/size=\d/,  'size='+ psize));
        });
    });

$('.prices').click(function() {
        var priceParam = $(this).attr('href');
        console.log(priceParam);
            $('.sizes').each(function() {
                var psize = $(this).attr('psize');
                $(this).attr('href', priceParam.indexOf('size=') === -1 ? (priceParam + '&size=' + psize) : priceParam.replace(/size=\d/, 'size=' + psize));
            });
    });
<div class="divContainer">
    <div>Sizes</div>
    <a class="sizes" href="#size=4" psize="4" border="0">
        <div class="inDivSize">4</div>
    </a>
    <a class="sizes" href="#size=5" psize="5" border="0">
        <div class="inDivSize">5</div>
    </a>
    <a class="sizes" href="#size=6" psize="6" border="0">
        <div class="inDivSize">6</div>
    </a>
</div>