Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление параметра из URL (https://javascript.ru/forum/events/50102-udalenie-parametra-iz-url.html)

test_koder 12.09.2014 00:18

Удаление параметра из URL
 
Всем привет.
Помогите новичку пожалуйста :help:
Есть функция которая при клике добавляет get параметр
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.location.href = base + '?' + res;
	return false;
}


<a href="#" onclick="return delAttr('parametr','value')">Test</a>

Кликаем и к адресу добавляется нужный get параметр.

Нужно его обратное действие, то есть если такой параметр в адресе имеется, то он его уберет из урла... Типа чекбокса есть галка нет галки...

Очень нужно

ksa 12.09.2014 08:46

Цитата:

Сообщение от test_koder
если такой параметр в адресе имеется, то он его уберет из урла

Как вариант...

var url='site.ru?prm1=1&prm2=2&prm3=3';
alert(delPrm(url,'prm1'));
alert(delPrm(url,'prm2'));
alert(delPrm(url,'prm3'));

function delPrm(Url,Prm) {
	var a=Url.split('?');
	var re = new RegExp('(\\?|&)'+Prm+'=[^&]+','g');
	Url=('?'+a[1]).replace(re,'');
	Url=Url.replace(/^&|\?/,'');
	var dlm=(Url=='')? '': '?';
	return a[0]+dlm+Url;
};

islyaeFF 01.07.2015 19:43

function delAttr_rcl(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];
                        }
                }
        }
        
        return base + '?' + res;
}

Отличие небольшое! Просто на выводе не добавляем амперсанд и параметр этот со значением и всё

kostyanet 03.07.2015 18:27

Все советы безыдейные, вот классовый

http://javascript.ru/forum/events/55...tml#post371245


Часовой пояс GMT +3, время: 18:59.