次のような 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 に問題があります。
助けていただければ幸いです。