У меня есть код для получения части якоря:
function _get_part(queryString, name) {
var match = '&' + name + '=';
var i = queryString.indexOf(match);
if(i < 0) {
match = name + '=';
if(queryString.slice(0, match.length) == match)
i = 0;
}
if(i > -1) {
i += match.length;
return queryString.slice(i, queryString.indexOf('&', i) >>> 0);
}
};
function get_location_hash() {
return window.location.hash.substr(2);
}
function get_part(name) {
return _get_part(get_location_hash(), name);
}
Мне нужна функция для изменения части привязки, если эта часть существует, или добавление части, если она не существует.
В настоящее время я использую следующий код:
function set_part(queryString, key, value) {
var oldv = key + '=' + get_part(key);
var newv = key + '=' + value;
window.location.hash = '/' + queryString.replace(oldv, newv);
}
Но если часть якоря не существует, якорь не меняется.
Формат URL: ... page / # / var1 = blablabla & var2 = var2text & gghh = edere
Якорь - # / var1 = blablabla & var2 = var2text & gghh = edere
Извините за мой английский.
Большое спасибо!
обновление:
это круто, большое спасибо!
только одна проблема: я загружаю страницу без всяких якорей:
... / страница /
nex используйте этот код:
set_part(get_location_hash(), 'filter', 'data');
set_part(get_location_hash(), 'filter2', 'data2');
set_part(get_location_hash(), 'fdgfg', 'fdgfdg');
alert(get_part('fdgfg'));
и получить ... / page / # / = & filter = data & filter2 = data2 & fdgfg = fdgfdg
как удалить первый символ '='?