例如,我有一个if语句,如果url#等于#Data-1
,则刷新该部分var Panelchecker = location.hash;
if (Panelchecker !== "#Data-1") {
window.setTimeout(function(){
location.reload();
},1000);
}
这导致无限循环,我该如何解决?
P.S:我不想做一个检查员
var Panelchecker = location.hash;
var checker = "1";
if (Panelchecker !== "#Data-1") {
window.setTimeout(function(){
location.reload();
checker="0";
},1000);
}
我不想要上述方法
答案 0 :(得分:0)
您应该更改位置,而不是重新加载它,因为您仍然会在URL中使用该哈希值,这将导致另一次刷新,另一次刷新,另一次刷新......
有很多方法可以做到这一点,例如,这将从URL中删除哈希:
location = location.pathname;
顺便说一下。您的代码设置为仅在哈希不是 #Data-1
时刷新页面,但您说"which refresh the section if the url# is equal to #Data-1"
。
Btw2。代码中的检查器不会做任何事情,因为它会在刷新后立即消失。
答案 1 :(得分:-1)
首先,如果url# is equal to #Data-1
,您想要刷新页面。因此,应使用===
代替!==
。
下,
这会导致无限循环
因为location.reload();
没有移除网址的哈希部分。每次页面刷新时,Panelchecker === "#Data-1"
都会变为真。
另一件事是使用window.setTimeout()
方法是没用的,因为页面正在重新加载。
所以这将解决你的问题
var Panelchecker = location.hash;
if (Panelchecker === "#Data-1") {
window.location.href = location.pathname;
}