Hari ini, saya menemukan kebutuhan untuk mengganti parameter tertentu dalam URL dengan JavaScript.
Salin kode kode sebagai berikut:
// URL analisis
fungsi parseurl (url) {
var a = document.createElement ('a');
A.href = url;
Kembali {
Sumber: URL,
Protokol: a.protocol.replace (':', ''),
Tuan rumah: a.hostname,
Port: A.port,
Kueri: a.search,
Params: (function () {
var return = {},
seg = a.search.replace (/^/?/, ',' ') .split (' & '),
len = seg.length, i = 0, s;
untuk (; i <len; i ++) {
if (! Seg [i]) {lanjutan;}
s = seg [i] .split ('=');
Ret [S [0]] = S [1];
}
Return Ret;
}) () ,,,
File: (a.pathname.match (/// ([^//?#]+) $/i) || [, ''] [1],
Hash: a.hash.replace ('#', ''),
Path: A.Pathname.replace (/^([^//])/, '/$ 1'),
Relatif: (a.href.match (/tps ?: //////////// media+(.+)/) || [, ''] [1] ,,,
segmen: a.pathname.replace (/^///, '') .split ('/')
};
}
// Ganti nilai parameter dengan nama yang sama di myurl
Fungsi REPLEURLPARAMS (MYRL, NEWPARAMS) {
/*
untuk (var x di myrl.params) {
untuk (var y di newParams) {
if (x.tolowercase () == y.tolowercase ()) {) {
myurl.params [x] = newParams [y];
}
}
}
*/
untuk (var x di newParams) {
var hasmurlparams = false;
untuk (var y di myrl.params) {
if (x.tolowercase () == y.tolowercase ()) {) {
myurl.params [y] = newParams [x];
HasInmyurlparams = true;
Merusak;
}
}
// parameter yang ternyata ditambahkan
if (! hasInmyurlparams) {
myurl.params [x] = newParams [x];
}
}
var _retult = myurl.protocol + ": //" + myurl.host + ":" + myurl.port + myurl.path + "?" ;;;;;;;;;;;;;;;
untuk (var p di myurl.params) {
_Result + = (p + "=" + myurl.params [p] + "&");
}
if (_result.substr (_result.length -1) == "&") {{
_Result = _result.substr (0, _Result.length -1);
}
ifrl.hash! = "") {{
_Result + = "#" + MyUrl.Hash;
}
Mengembalikan _Result;
}
// Output tambahan
Fungsi w (str) {
document.write (str + "<br>");
}
var myurl = parseUrl ('http://abc.com:8080/dir/index.html?id=255&m=hello#top'););
w
w
w
w ("myurl.query =" + myurl.query) // = '?
w ("myurl.params =" + myurl.params) // = objek = {id: 255, m: hello}
w
w ("myurl.segments =" + myurl.segments) // = array = ['dir', 'index.html']]]
w
w
w ("myurl.source =" + myurl.source) // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
var _newurl = REPLEURLPARAMS (myrl, {id: 101, m: "world", page: 1, "page": 2});
w ("<br> URL baru adalah:")
w (_newurl);