0

次のような URL の Web があります。

http://www.example.com/index.php?mod=7&sec=franquicias&month=10&year=2013

内部には日付セレクターがあります。get パラメータの月と年を変更することになっています。ページをリロードします。

HTML から、日付の減少を担当するボタンで次のことを行います。

<button type="button" class="btnIcon previous lbutton" onclick="changeMonth('previous',{$smarty.get.month},{$smarty.get.year})">

そして、それを管理する必要があるJavaScript関数は次のとおりです。

    function changeMonth(changeType, month, year){
    changeMonth;

    switch (changeType){
    case "previous":
        changeMonth = month-1;
        if (changeMonth <= 0) changeMonth = 12;
        if (changeMonth < 10) changeMonth = "0"+changeMonth;
        window.location = updateURLParameter($(location).attr('href'), month, changeMonth);
        break;
    case "next":
        break;
    }       
}

function updateURLParameter(url, param, paramVal){

    var regEx = /month=[0-9]{3}/;
    console.log("paramVal: "+paramVal);
            // paramVal here is ever correct.
    var newUrl = url.replace(regEx, 'month='+paramVal);

    console.log(newUrl);
    return newUrl;
}

動作するはずですが、奇妙なことに、URL の GET パラメータが &month=03 の場合にのみ動作し、他の月がある場合、url.replace は URL を正しく置き換えません。関数「updateUrlParameter」の「paramVal」は常に正しいことに注意することが重要です。そのため、「関数 updateUrlParameter」からの urlReplace に問題があります。

助けていただければ幸いです。

4

1 に答える 1

1

に対してもどのように機能するかわかりませんmonth=03[0-9]{3}正確に 3 桁に一致し、それに03は一致しません。正しい正規表現は次のとおりです。

/\bmonth=\d{2}\b/
于 2013-05-07T11:57:06.077 に答える