如果语句只执行一次

时间:2016-05-03 04:20:44

标签: javascript jquery

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

我不想要上述方法

2 个答案:

答案 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;
 }