Arshad Rehmani
Arshad Rehmani

Reputation: 2185

Replace the url parameter value using js

I have a URL like below.

something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false

I want to replace the value of parameter showHiddenElements to some new value.

for e.g. exising value in URL -> showHiddenElements=false

I want to change it through JavaScript to -> showHiddenElements=true

Please advise.

Edit: showHiddenElements may not always be false. And In some cases it may not be available.

Upvotes: 0

Views: 8083

Answers (5)

Anne Douwe
Anne Douwe

Reputation: 691

You could use String.replace for that:

var url = 'something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false';

newUrl = url.replace('showHiddenElements=false', 'showHiddenElements=true');

You could also do it fancy and use regex:

var url = 'something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false';

newUrl = url.replace(/showHiddenElements=false$/, 'showHiddenElements=true');

The regex would only match showHiddenElements=false if it's on the end of the URL

To see if it's available you could use regex too:

var url = 'something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false';

// If the url doesn't have a showHiddenElements=__any_word__
if (!url.match(/showHiddenElements=\w+/)) {
    url = url + 'showHiddenElements=false';
}

Upvotes: 1

t3__rry
t3__rry

Reputation: 2849

Use the URL Object:

const url = new URL('http://something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false');
url.searchParams.delete('showHiddenElements');
url.searchParams.append('showHiddenElements', true);

So you just delete the parameter and update it with the new one (not the most elegant) Docs here: https://developer.mozilla.org/fr/docs/Web/API/URL

Upvotes: 2

s_coder
s_coder

Reputation: 21

A JavaScript Regular Expression should help if you are just treating the URL as a string.

var str = 'something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false';

var res = str.replace(/showHiddenElements/i, 'true');

console.log(res);

Upvotes: 0

Cristian Szpisjak
Cristian Szpisjak

Reputation: 2469

Maybe something liket this:

var loc = window.location.href;
var newLoc = loc.Replace('showHiddenElements=true', 'showHiddenElements=false')

Upvotes: 0

Feathercrown
Feathercrown

Reputation: 2591

var url = "something.com/TaskHandler/search.do?action=search&category=basic&page=1&sortBy=NAME&Ascending=true&showHiddenElements=false";
alert("Before: "+url);
url = url.replace("&showHiddenElements=false","&showHiddenElements=true");
alert("After: "+url);
//Console.log clips the end so we can't see the result :(

Upvotes: 0

Related Questions