Это изменение GET параметров в url
Дело в том что при нажатии на name
ulr = index?sort=name
, а по
нажатию на nums
ulr = index?sort=nums
, но нужно чтобы результат был
таким ulr = index?sort=name&sort=nums
<a onclick="return setAttr('sort','name')">по name</a>
<a onclick="return setAttr('sort','nums')">по nums</a>
<script>
function setAttr(prmName,val){
var res = '';
var d = location.href.split("#")[0].split("?");
var base = d[0];
var query = d[1];
if(query) {
var params = query.split("&");
for(var i = 0; i < params.length; i++) {
var keyval = params[i].split("=");
if(keyval[0] != prmName) {
res += params[i] + '&';
}
}
}
res += prmName + '=' + val;
window.history.pushState(null, null, base + '?' + res);
return false;
}
</script>
Я в комментах ошибся немножко:
if(keyval[0] != prmName || keyval[1] != val) {
res += params[i] + '&';
}
Fiddle
Можно добавить проверку наличия текущего значения и убирать его:
if(keyval[0] == prmName && keyval[1] == val) {
exists = true;
} else ...
А потом проверять и не добавлять этот параметр.
Fiddle
Вот так можно попробовать:
function setAttr(prmName, val) {
var el = prmName + '=' + val;
var res = '';
var d = location.href.split("#")[0].split("?");
var base = d[0];
var query = d[1];
if (query) {
var params = query.split("&");
for (var i = 0; i < params.length; i++) {
if (params.includes(el)) {
console.log('Значение уже содержится');
//console.log(location.href);
return false;
}else{
res += params[i] + '&';
}
}
}
res += el;
window.history.pushState(null, null, base + '?' + res);
console.log(base + '?' + res);
return false;
}
<a onclick="return setAttr('qsort','name')">qsort name</a>
<a onclick="return setAttr('sort','name')">sort name</a>
<a onclick="return setAttr('sort','nums')">sort nums</a>
В условии проверим наличие такого элемента с ключом и значением в массиве параметров params
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собственно как? Использую NodeJS, и библиотеку "request" https://github
ЗдравствуйтеВозможно ли узнать на какой адрес был отправлен запрос, не зная какой именно объект его отправляет? Да это можно посмотреть в консоли,...
Проблема в том что название (не массив!) массива передается в динамическую функцию и нужно из этого массива прочитать значенияФункция примерно...