2017-02-20 45 views
0

我希望此代碼替換現有的URL參數「aspid」,但它所做的是在現有URL參數上添加另一個ID。誰能幫忙?用新的覆蓋現有的URL參數值

$(document).ready(function() { 

    function GetUrlValue(VarSearch) { 
    var SearchString = window.location.search.substring(1); 
    var VariableArray = SearchString.split('&'); 
    for (var i = 0; i < VariableArray.length; i++) { 
     var KeyValuePair = VariableArray[i].split('='); 
     if (KeyValuePair[0] == VarSearch) { 
     return KeyValuePair[1]; 
     } 
    } 
    } 

    var asid = GetUrlValue('aspid'); 
    var campaign = GetUrlValue('utm_campaign'); 
    if (asid != undefined) { 
    $("a").attr('href', function(i, h) { 
     return h + (h.indexOf('?') != -1 ? "&aspid=" + asid : "?aspid=" + asid); 
    }); 
    } 
}); 

回答

1

你需要調用每個a此功能:

/** 
* http://stackoverflow.com/a/10997390/11236 
*/ 
function updateURLParameter(url, param, paramVal){ 
    var newAdditionalURL = ""; 
    var tempArray = url.split("?"); 
    var baseURL = tempArray[0]; 
    var additionalURL = tempArray[1]; 
    var temp = ""; 
    if (additionalURL) { 
     tempArray = additionalURL.split("&"); 
     for (var i=0; i<tempArray.length; i++){ 
      if(tempArray[i].split('=')[0] != param){ 
       newAdditionalURL += temp + tempArray[i]; 
       temp = "&"; 
      } 
     } 
    } 

    var rows_txt = temp + "" + param + "=" + paramVal; 
    return baseURL + "?" + newAdditionalURL + rows_txt; 
} 

,並調用函數如下所示:

updateURLParameter(window.location.href, 'paramName', 'Value') 

完整的代碼是這樣的:

... 
$("a").attr('href', function(i, h) { 
if(h){ 
    return updateURLParameter(h, 'aspid', asid); 
} 
}); 
... 
+0

所以如何完成c ö像那樣? – Azchezuazche