2017-03-14 6 views
-1

私はいくつかの魔法に苦しんでいます。私はクリックでURLからparametr値を削除しようとしている:VARからJavascript double string.replace()

function removeParam(name, value) { 
    var newUrl = window.location.href.split("?")[0], 
      sourceURL = window.location.href, 
    param, 
    params_arr = [], 
    queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : ""; 
if (queryString !== "") { 
    params_arr = queryString.split("&"); 
    for (var i = params_arr.length - 1; i >= 0; i -= 1) { 
     param = params_arr[i].split("&")[0]; 
     if (param.indexOf(name) !== -1) { 
      if (params_arr[i].indexOf("%s") !== -1) { 
       params_arr[i] = param.replace("%s" + value , ""); 
       params_arr[i] = param.replace(value , ""); 

      } 
      else { 
       params_arr[i] = param.replace(name + "=" + value, ""); 
      } 
     } 
    } 
    if (params_arr[0] !== "") { 
     newUrl = newUrl + "?" + params_arr.join("&"); 
    } 

} 
window.history.pushState(null,"", newUrl); 

削除値C
ソースURL:/?var=A%sB%sC
URL-する必要があります:/?var=A%sB

などの対応する値を持つ複数のパラメータを持つことができます。ソースURL: それは、セパレータなしのみCを削除します:

しかし、魔法は私が二列strを追加した場合ということです%sの

どのようにそれを修正するには?

ヘッドから値を削除する必要があるため、この2番目の置換を追加しました。

+0

ですから、URL値を取得したいみては? [Location](https://developer.mozilla.org/en-US/docs/Web/API/Location)オブジェクトはどうですか? –

+0

私はそれを行う方法を知っています:)私はなぜ私は別のstr.replaceを追加する場合は、区切り記号を追加する理由を理解していない。デバッガで私は2番目のstr.replaceが何もしないことを見ることができますが、次のステップでは何の理由もなしにセパレータを魔法のように追加します – Scorpa

答えて

0

これは前に回答されている、この

function removeURLParameter(url, parameter) { 
    //prefer to use l.search if you have a location/link object 
    var urlparts= url.split('?'); 
    if (urlparts.length>=2) { 

     var prefix= encodeURIComponent(parameter)+'='; 
     var pars= urlparts[1].split(/[&;]/g); 

     //reverse iteration as may be destructive 
     for (var i= pars.length; i-- > 0;) {  
      //idiom for string.startsWith 
      if (pars[i].lastIndexOf(prefix, 0) !== -1) { 
       pars.splice(i, 1); 
      } 
     } 

     url= urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ""); 
     return url; 
    } else { 
     return url; 
    } 
} 

https://stackoverflow.com/a/1634841/3511012

+0

前に質問された質問には答えないでください。代わりに、質問を重複としてフラグを立てます。 –

+0

おかげで、おかげで@MikeMcCaughan – stackoverfloweth

+0

thats別の解決策。そして、この行動を理解するのに役立たない。 2番目の置換文字列を追加するとセパレータが追加されるのはなぜですか? – Scorpa

関連する問題