我遇到运行脚本的实施问题。我想要达到的结果如下。
应该点击网站上的hi_button
来运行该脚本,等到btc_digits
因点击hi_button
而加载完毕(尽管如此,我使用setTimeout
来给btc_digits
足够的时间来完成加载,我不确定ready()
函数是否会更好,或者如何实现它,然后检查另一个输出btc_lose
。如果btc_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()
我的原始问题可以在Programmers上找到: https://softwareengineering.stackexchange.com/q/240657/131983
答案 0 :(得分:1)
现在我给你的代码一些缩进,我们可以看到发生了什么......有点儿。
让我们从javascript中使用分号开始吧。在代码块结束时不需要它,但你绝对应该使用它,这样你就不会混淆自己和他人。当您在代码块中有另一个语句后,在语句结束时肯定需要它。换行不够好。(除非你使用coffeescript,它会为你添加它们)所以让我们添加它们。我不知道你想要做什么,所以自己添加它们。
接下来让我们来看看你的jQuery。我认为你做错了$('#double_your_btc_bet_hi_button').click()
。这告诉jQuery运行该按钮的click事件。所以你几乎强迫点击该按钮。我认为你要做的事情就像$('#double_your_btc_bet_hi_button').click(function(){/*do something*/});
。
执行setTimeout(myFunc(), 2500)
不正确。你应该把函数名放在那里。所以setTimeout(myFunc, 2500)
。否则javascript将在到达该点时调用该函数,并将其返回值保留在setTimeout中。所以你会做setTimeout("returned value", 2500)
之类的事情,这显然不是你想要的。
为什么在其他函数中有这么多函数声明?除非你有理由将这些功能放在一起,否则请将它们分开。如果在您调用的代码块之外声明它们,您仍然可以调用它们。做这样的事情:
function one(){
/*do something*/
two();
}
function two(){
/*la dee da*/
}
如果您在修复语法错误后仍然遇到问题并使事情看起来更好一些,请评论答案,我会看看。祝你好运。
在使用rollDice = function(){...}
而不是function rollDice(){...}
之前,请先阅读this question。
<强>更新强>
虽然这对我来说仍然没有很多,但也许这更像是你想要完成的事情。
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();