这有什么问题?
哈希是:#/ search = hello / somethingelse /
window.location.hash.replace(/search=([^\/]*)/gi, "search=" + value);
修改
我想更改hash
的特定部分而不是整个hash
。
答案 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快速搜索显示SO和Wikipedia都支持我
这实际上意味着没有赋值语句就无法更改它们的值。
因此,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);