Javascript无法理解要在脚本中使用的IF循环

时间:2018-07-26 12:19:23

标签: javascript tampermonkey

我是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执行时​​,即使我将变量设置为false,第2页也会继续循环if调用。

我尝试做类似的事情:

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

if(doThis())
{
    goToPage2;
    do stuff;
    doThis();
}

我最终要继续执行if语句,转到第2页,而由于该'if'的下一次迭代,我在该页面上执行操作的settimeouts永远不会执行。

我的思维方式在做错什么?

1 个答案:

答案 0 :(得分:0)

您的doThis()功能正确。一切正常。

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

但是,当您检查循环时,只需调用一次即可。完成操作后,您再次调用doThis()函数,这是错误的。

if(doThis())
{
    goToPage2;
    do stuff;
    //doThis();
}

这也取决于您如何调用此循环和函数。

例如,

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

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

这里,当条件满足正确的语句i%2 == 0时,它将自动调用goToPage2函数,否则它将再次检查条件。

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

希望这会有所帮助。