function paramReplace(name, string) {
var re = new RegExp("[\\?&]" + name + "=([^&#]*)"),
newString = string.replace(re,"");
alert(newString);
return newString;
}
var name="variety";
var string="http://www.example.com/xyz/test.html?Color=Black&key=dress&variety=Leather";
alert(paramReplace(name, string));
var name = "Color";
alert(paramReplace(name, string));
在我的小提琴中,我试图在某些事件上使用javascript函数更新我的网址。
每当我删除与?
相邻的url参数时,它正在删除?
并只是附加其余值,因此在第一个警报中url很好,但是第二个函数调用url正在破碎。
如何处理此方案,其中?
旁边的参数被删除。有什么想法吗?
答案 0 :(得分:0)
这是一种方法:
function paramReplace(url, key, value) {
var parser = document.createElement('a');
parser.href = url;
var re = new RegExp('^' + key + '=', 'i');
var search = parser.search.substring(1).split('&');
for (i = 0; i < search.length; i++) {
if (re.test(search[i])) {
search[i] = key + '=' + value;
break;
}
}
parser.search = search.join('&');
return parser.href;
}
var url = "http://www.example.com/xyz/test.html?Color=Black&key=dress&variety=Leather";
var key = 'variety';
var value = 'modified';
console.log(paramReplace(url, key, value));
var key = 'color';
var value = 'modified';
console.log(paramReplace(url, key, value));
此代码解析URL,遍历搜索项并删除匹配的键值对。