我是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永远不会执行。
我的思维方式在做错什么?
答案 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
函数。
希望这会有所帮助。