开发者

Javascript hash replace error [duplicate]

This question already has answers here: Replace method doesn't work (4 answers) Closed 8 years ago.

What's the problem with this?

t开发者_Python百科he hash is : #/search=hello/somethingelse/

window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);

EDIT:

I want to change just a specific part of the hash not the whole hash.


hash.replace() does not actually change the hash, only return a value (as it is a String function). Try assigning that result, using:

window.location.hash = window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);

On the other hand, window.location.replace() is actually a function that changes the URL, but that does not work directly with regexes.


Did you forget to assign it?

replace() is a String function and returns a new String object, it doesn't modify the original String.

window.location.hash = window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);


JavaScript strings are immutable, I believe. (a quick Google search shows that both SO and Wikipedia back me up)

This effectively means their value can't be changed without an assignment statement.

Hence, String.replace(...) doesn't change the String's value, but instead returns a new String.

var replaced = window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);

Now, since you are presumably trying to change the window.location.hash you're probably fishing for...

window.location.hash = window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜