Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在理解脚本中要使用的IF循环时遇到困难_Javascript_Tampermonkey - Fatal编程技术网

Javascript在理解脚本中要使用的IF循环时遇到困难

Javascript在理解脚本中要使用的IF循环时遇到困难,javascript,tampermonkey,Javascript,Tampermonkey,我是javascript新手,正在使用tampermonkey创建网站。 我想做的是监视一个页面上的变量,当该变量达到某个值时,转到另一个页面,做一些事情,然后重新检查该变量的值 我的逻辑是: setInterval(function(){reloadPage1},10000); var variable = someTextonThisPage; if(someTextonthisPage meets condition) { go to Page2; execute some

我是javascript新手,正在使用tampermonkey创建网站。 我想做的是监视一个页面上的变量,当该变量达到某个值时,转到另一个页面,做一些事情,然后重新检查该变量的值

我的逻辑是:

setInterval(function(){reloadPage1},10000);
var variable = someTextonThisPage;
if(someTextonthisPage meets condition)
{
    go to Page2;
    execute something on page 2;
    setNewValueForVariable; //(or just go back to initial 
    //and get the new value from there)
}
现在我的问题是,当if执行时,它会转到第2页,即使我将变量设置为false,它也会继续循环if调用

我试过这样做:

function doThis()
{
   if(condition)
      return true;
   else return false;
}

if(doThis())
{
    goToPage2;
    do stuff;
    doThis();
}
最后,我让if语句继续下去,转到第2页,我的settimeout在该页上做了一些事情,但由于“if”的下一次迭代,所以从未执行过

在我的思维模式中,我犯了什么可怕的错误

您的
doThis()
函数是正确的。一切都好

function doThis()
{
    if(condition)
        return true;
    else 
        return false;
}
但是当你检查循环时,你只能调用它一次。完成这些操作后,您再次调用
doThis()
函数,这是错误的。

它还取决于如何调用这个循环和函数

例如,

<script>
    var i = 0;
    onPageLoad()
    {
        if(i%2==0){
            return true;
            i++;
        }else{
            return false;
            i++;
        }
    }

    if(onPageLoad()){
        goToPage2;
        doStuff();
    }else{
        onPageLoad()
    }
</script>

var i=0;
onPageLoad()
{
如果(i%2==0){
返回true;
i++;
}否则{
返回false;
i++;
}
}
if(onPageLoad()){
哥多帕吉2;
doStuff();
}否则{
onPageLoad()
}
这里,当条件满足正确的语句,即
i%2==0
时,它将自动调用
goToPage2
函数,否则它将再次检查条件

您可以在循环中添加
interval/timeout
,以检查变量何时更新以及何时调用
goToPage2
函数


希望这有帮助。

当它转到第2页时,您是否
clearInterval
?只是一个观察,为什么在if块中调用两次此方法?这似乎是多余的。
setTimeout
在一定时间后触发对函数的调用,其中
setInterval
每隔一定时间触发一次调用
<script>
    var i = 0;
    onPageLoad()
    {
        if(i%2==0){
            return true;
            i++;
        }else{
            return false;
            i++;
        }
    }

    if(onPageLoad()){
        goToPage2;
        doStuff();
    }else{
        onPageLoad()
    }
</script>