Javascript localStorage导致函数被无限次加载
我正在根据选定的值过滤用户看到的内容。用户可以在consumer和commercial之间进行选择,代码应将“/commercial”添加到商业用户的URL中,并将“/consumer”添加到消费者用户的URL中 这是我当前使用的代码,每次加载页面时都会运行下面的函数,从而产生无限循环Javascript localStorage导致函数被无限次加载,javascript,function,window.location,Javascript,Function,Window.location,我正在根据选定的值过滤用户看到的内容。用户可以在consumer和commercial之间进行选择,代码应将“/commercial”添加到商业用户的URL中,并将“/consumer”添加到消费者用户的URL中 这是我当前使用的代码,每次加载页面时都会运行下面的函数,从而产生无限循环 /* Hides non-commercial products */ function commercial() { window.location.assign(window.location.origi
/* Hides non-commercial products */
function commercial() {
window.location.assign(window.location.origin + "/collections/{{ collection.handle }}/commercial");
localStorage.setItem("saved", "0");
}
/* Hides non-consumer products */
function consumer() {
window.location.assign(window.location.origin + "/collections/{{ collection.handle }}/consumer");
localStorage.setItem("saved", "1");
}
/* Shows all products */
function reset() {
window.location.assign(window.location.origin + "/collections/{{ collection.handle }}");
localStorage.removeItem("saved");
}
更新的代码:LocalStorage导致每次加载页面时都会运行上述函数,从而导致无限循环。下面是mt LocalStorage获取密钥代码的保存值:
/* Remember last clicked button and store it in LocalStorage */
window.addEventListener('load', (event) => {
const value = localStorage.getItem("saved");
if (value == "0") {
commercial();
} else if (value == "1") {
consumer()
} else {
reset()
}
});
这就是代码输出的内容:(DJI只是集合的一个示例)
window.location.href
保存完整的URL,因此它将附加到以前的URL,而不是使用window.location.origin
window.location.assign(window.location.origin + "/commercial");
这些函数在哪里运行?在运行函数之前是否检查了localstorage?@FredStark,只需单击一个特定的按钮即可运行函数。LocalStorage之前已被选中,并被同一个按钮单击所覆盖。@Ravikumar谢谢,我现在可以让它显示正确的URL,但它现在被卡在一个无限循环中,导致页面继续重新编码。这就是我所做的。它需要前面的/collections部分<代码>/*隐藏非商业产品*/function commercial(){window.location.assign(window.location.origin+“/collections/{collection.handle}}/commercial”);localStorage.setItem(“saved”,“0”);}/*隐藏非消费品*/function consumer(){window.location.assign(window.location.origin+“/collections/{collection.handle}}/consumer“;localStorage.setItem(“saved”,“1”);}你是什么意思?你能详细解释一下吗?好的,一旦我进入一个带有函数的页面,它会带我到正确的URL,但是函数会继续带我到页面,即使我已经在上面了,导致它被重新加载。你是如何解析这个
window.location.origin+“/collections/{{collection.handle}}/commercial”
?你是说除了onclick之外的`${window.location.origin}/collections/${collection.handle}/commercial`
,你在任何地方调用这些方法吗?
window.location.assign(window.location.origin + "/commercial");