gpt4 book ai didi

javascript - 拆分并解析window.location.hash

转载 作者:行者123 更新时间:2023-12-02 23:09:01 24 4
gpt4 key购买 nike

我遇到了正确分割和解析 window.location.hash 的问题。

首先,我们在哈希中得到几个参数,例如:

#loc=austria&mr=1&min=10&max=89

正如您所看到的,它是为搜索而创建的。当用户单击分页链接时,页面将使用哈希值重新加载。到目前为止一切顺利。

我创建了函数initialise(),每次URL中存在散列时都会调用该函数:

if (window.location.hash) {
var params = (window.location.hash.substr(1)).split("&");

for (i = 0; i < params.length; i++)
{
var a = params[i].split("=");
// Now every parameter from the hash is beind handled this way
if (a[0] == "loc")
{
locationList(a[1]);
}
}
}

一切都几乎正常工作...当我选择所有搜索参数时,哈希值正在...被剪切。对于我来说,出于未知的原因。我尝试使用 if( params.indexOf('loc') ) 而不是 a[0] == "loc" 但没有任何运气。

你能帮我一下吗?

编辑
当然,我在循环中使用了 var a = ...,这只是复制粘贴错误。

最佳答案

如果它只是您要查找的哈希值中的 loc 值,则不需要循环。这应该也有效。

var lochash    = location.hash.substr(1),
mylocation = lochash.substr(lochash.search(/(?<=^|&)loc=/))
.split('&')[0]
.split('=')[1];
if (mylocation) {
locationList(myLocation);
}

关于页面重新加载后哈希值的 chop :恕我直言,这与您的循环无关。

编辑更现代、更准确的方法:

const result = document.querySelector("#result");
const hash2Obj = "loc=austria&mr=1&test123=test=123&min=10&max=89"
.split("&")
.map(v => v.split(`=`, 1).concat(v.split(`=`).slice(1).join(`=`)) )
.reduce( (pre, [key, value]) => ({ ...pre, [key]: value }), {} );

result.textContent += `loc => ${hash2Obj.loc}
----
*hash2Obj (stringified):
${JSON.stringify(hash2Obj, null, ' ')}`;
<pre id="result"></pre>

关于javascript - 拆分并解析window.location.hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5646851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com