Javascript哈希替换错误

时间:2010-10-27 00:57:16

标签: javascript hash replace

这有什么问题?

哈希是:#/ search = hello / somethingelse /

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

修改

我想更改hash的特定部分而不是整个hash

3 个答案:

答案 0 :(得分:4)

hash.replace()实际上并没有更改散列,只返回一个值(因为它是一个String函数)。尝试使用以下方式分配该结果:

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

另一方面,window.location.replace() 实际上是一个更改URL的函数,但这不能直接与正则表达式一起使用。

答案 1 :(得分:1)

你忘了分配吗?

replace()是一个String函数并返回一个新的String对象,它不会修改原始的String。

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

答案 2 :(得分:0)

我相信JavaScript字符串是不可变的。 (Google快速搜索显示SOWikipedia都支持我

这实际上意味着没有赋值语句就无法更改它们的值。

因此,String.replace(...)不会更改String的值,而是返回一个新的String。

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

现在,因为你可能想要改变window.location.hash你可能正在钓鱼......

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