If语句只执行一次

If statement only execute once

本文关键字:一次 语句 执行 If      更新时间:2023-09-26

例如,我有一个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);
}

我不想要上面的方法

您应该更改位置,而不是重新加载它,因为URL中仍然有那个散列,它将强制进行另一次刷新,又一次刷新。。。

有很多方法可以做到这一点,例如,这将从URL中删除哈希:

location = location.pathname;

Btw。您的代码设置为仅当hash不是#Data-1时刷新页面,但您说的是"which refresh the section if the url# is equal to #Data-1"

顺便说一句,你代码中的checker不会有任何作用,因为刷新一发生它就死了。

首先,如果url# is equal to #Data-1。因此应该使用===而不是!==

接下来,

这会导致一个无限循环

因为CCD_ 6没有移除url的散列部分。Panelchecker === "#Data-1"在每次刷新页面时变为true。

另一件事是使用window.setTimeout()方法是无用的,因为页面正在重新加载。

所以这将解决你的问题

 var Panelchecker = location.hash;    
 if (Panelchecker === "#Data-1") {  
     window.location.href = location.pathname;
 }