Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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/jQuery—重复检查5次迭代&;如果满足条件,则运行另一个函数_Javascript_Jquery_Setinterval_Ready - Fatal编程技术网

Javascript/jQuery—重复检查5次迭代&;如果满足条件,则运行另一个函数

Javascript/jQuery—重复检查5次迭代&;如果满足条件,则运行另一个函数,javascript,jquery,setinterval,ready,Javascript,Jquery,Setinterval,Ready,我在运行脚本时遇到了一个实现问题。我正在努力实现的结果如下 rollDice = function() { $('#double_your_btc_bet_hi_button').click() setTimeout(one(), 2500) one() function one() { if ($('#double_your_btc_lose').html() !== '') { $('#double_your_btc_bet_hi_butt

我在运行脚本时遇到了一个实现问题。我正在努力实现的结果如下

rollDice = function() { 
  $('#double_your_btc_bet_hi_button').click() 
  setTimeout(one(), 2500) 

  one() 

  function one() { 
    if ($('#double_your_btc_lose').html() !== '') { 
      $('#double_your_btc_bet_hi_button').click() 
      setTimeout(two(), 2500) 
      two() 
    } else { 
      one() 
    } 

    function two() { 
      if ($('#double_your_btc_lose').html() !== '') { 
          $('#double_your_btc_bet_hi_button').click() 
          setTimeout(three(), 2500) 
          three() 
      } else { 
          one() 
      } 

      function three() { 
        if ($('#double_your_btc_lose').html() !== '') { 
            $('#double_your_btc_bet_hi_button').click() 
            setTimeout(four(), 2500) 
            four() 
        } else {  
            one() 
        } 

        function four() { 
          if ($('#double_your_btc_lose').html() !== '') { 
            $('#double_your_btc_bet_hi_button').click() 
            setTimeout(five(), 2500) 
            five() 
          } else { 
            one() 
          } 

          function five() { 
            if ($('#double_your_btc_lose').html() !== '') { 
                alert("function2") 
            } else { 
                one() 
            } 
          } 
        } 
      } 
    } 
  } 
} 

rollDice()
脚本应该通过点击网站上的
hi_按钮
来运行,等待
btc_数字
完成加载,因为点击
hi_按钮
(虽然我使用
setTimeout
btc_数字
足够的时间来完成加载,但我不确定
ready()
功能会更好,或者如何实现),然后检查另一个输出,
btc\u lose
。如果
btc\u lose
不满足5次迭代中任何一次的条件,脚本将从第一次迭代
function one()
开始。如果所有5次迭代都满足条件,则另一个脚本将变为活动脚本。然后这个过程又重新开始

我尝试过许多变体,但都不管用。最新的javascript/jQuery如下所示

rollDice = function() { 
  $('#double_your_btc_bet_hi_button').click() 
  setTimeout(one(), 2500) 

  one() 

  function one() { 
    if ($('#double_your_btc_lose').html() !== '') { 
      $('#double_your_btc_bet_hi_button').click() 
      setTimeout(two(), 2500) 
      two() 
    } else { 
      one() 
    } 

    function two() { 
      if ($('#double_your_btc_lose').html() !== '') { 
          $('#double_your_btc_bet_hi_button').click() 
          setTimeout(three(), 2500) 
          three() 
      } else { 
          one() 
      } 

      function three() { 
        if ($('#double_your_btc_lose').html() !== '') { 
            $('#double_your_btc_bet_hi_button').click() 
            setTimeout(four(), 2500) 
            four() 
        } else {  
            one() 
        } 

        function four() { 
          if ($('#double_your_btc_lose').html() !== '') { 
            $('#double_your_btc_bet_hi_button').click() 
            setTimeout(five(), 2500) 
            five() 
          } else { 
            one() 
          } 

          function five() { 
            if ($('#double_your_btc_lose').html() !== '') { 
                alert("function2") 
            } else { 
                one() 
            } 
          } 
        } 
      } 
    } 
  } 
} 

rollDice()
我的原始问题可在以下网址找到:

现在我给了您的代码一些缩进,我们可以看到发生了什么。。。有点

让我们从javascript中分号的使用开始。在代码块的末尾不需要它,但是您应该明确地使用它,这样您就不会混淆自己和其他人。当您在代码块的后面有另一个语句时,在语句的末尾肯定需要它。换行符不够好。(除非您使用的是coffeescript,它会为您添加这些换行符),所以让我们添加这些换行符。我不知道你到底想做什么,所以你自己去添加吧

接下来让我们看看jQuery。我认为你做错了。
$(“#双击你的\u btc\u bet\u hi\u按钮”)。单击()。这将告诉jQuery为该按钮运行click事件。因此,您几乎是在强制单击该按钮。我认为您试图做的是类似于
$('double#u your_btc_bet_hi_按钮')。单击(function(){/*do something*/})

执行设置超时(myFunc(),2500)
是不正确的。你应该把函数名放在那里。因此
setTimeout(myFunc,2500)
。否则,javascript将在函数到达该点时调用该函数,并在setTimeout中保留其返回值。因此,您将执行类似于
setTimeout(“返回值”,2500)
的操作,这显然不是您想要的

为什么在其他函数中有这么多函数声明?除非你有理由把这些函数放在一个函数里面,否则请把它们拆开。如果它们在您调用的代码块之外声明,您仍然可以调用它们。这样做:

function one(){
  /*do something*/
  two();
}
function two(){
  /*la dee da*/
}
如果您在修复语法错误后仍然存在问题,并使事情看起来更好一些,请对答案进行评论,我会看一看。祝你好运

在使用
rollDice=function(){…}
而不是使用
function rollDice(){…}
之前也要阅读

更新

虽然这对我来说还不是很重要,也许这是你想要实现的

function rollDice() {
  $('#double_your_btc_bet_hi_button').click(function(){
    setTimeout(one, 2500);
  }
}

function one() { 
  if ($('#double_your_btc_lose').html() !== '') { 
    $('#double_your_btc_bet_hi_button').click(function(){
      setTimeout(two, 2500);
    });
  } else { 
    one()
  } 
}

function two() { 
  if ($('#double_your_btc_lose').html() !== '') { 
    $('#double_your_btc_bet_hi_button').click(function(){
      setTimeout(three, 2500);
    }
  } else { 
    one();
  } 
}

function three() { 
  if ($('#double_your_btc_lose').html() !== '') { 
    $('#double_your_btc_bet_hi_button').click(function(){
      setTimeout(four, 2500);
    });
  } else { 
    one();
  } 
}

function four() { 
  if ($('#double_your_btc_lose').html() !== '') { 
    $('#double_your_btc_bet_hi_button').click(function(){
      setTimeout(five, 2500);
    }
  } else { 
    one();
  } 
} 

function five() {
  if ($('#double_your_btc_lose').html() !== '') {
    alert("function2");
  } else {
    one();
  }
}

rollDice();

我不知道你想做什么。你把
setInterval()
setTimeout()
搞混了吗?前者是中继器,后者是自毁的。是的,它应该设置为超时。很抱歉造成混淆,感谢您的回复。您需要传递函数引用,如
setTimeout(one,2500)而不是
设置超时(一个(),2500)
当前,当使用
one()
@Satpal+1时,您将立即调用它。您还可以传递一个匿名函数
setInterval(function(){/*procedure*/},2500)但不是在这种情况下。@popla面,当一个人不做任何其他事情时,传递函数引用就足够了