Javascript 如何使用SetInterval函数和';如果';进行div';它会弹出吗?
我有一个打鼹鼠游戏的脚本,但我似乎无法使用随机数生成器在我想要的时候让我的div弹出。这是我的代码:(顺便说一下,这是我做的第一个游戏,所以这是一个愚蠢的问题:)) 和我的html相关:Javascript 如何使用SetInterval函数和';如果';进行div';它会弹出吗?,javascript,jquery,if-statement,random,setinterval,Javascript,Jquery,If Statement,Random,Setinterval,我有一个打鼹鼠游戏的脚本,但我似乎无法使用随机数生成器在我想要的时候让我的div弹出。这是我的代码:(顺便说一下,这是我做的第一个游戏,所以这是一个愚蠢的问题:)) 和我的html相关: <div id="minigameblockholder"> <div class='moles' id="mole1"> </div> <div class='moles' id="mole2"> <
<div id="minigameblockholder">
<div class='moles' id="mole1"> </div>
<div class='moles' id="mole2"> </div>
<div class='moles' id="mole3"> </div>
<div class='moles' id="mole4"> </div>
<div class='moles' id="mole5"> </div>
<div class='moles' id="mole6"> </div>
<div id="scorebord"> </div>
</div>
我还没有开始做我的记分板,所以不要再修改了。
谢谢你,
贾斯珀编辑
我不知道你是否编辑了你的答案,但是我可以看到一些东西会阻止它工作
您的if语句将不起作用。您正在使用赋值运算符(“=”),这是分配变量的方式
var x=2代码>(将2分配给变量x)
在比较中需要使用“==”(等于)运算符
如果(randomnumber==2)
(如果randomnumber等于2)
原始答案
根据我的评论,我无法从您的代码片段中看出它为什么不起作用。但是,您可以尝试以下方法:
setInterval(function(){
var randomnumber = 1 + Math.floor(Math.random() * 10);
$('#mole1').html(randomnumber);
var mole = $('#mole' + randomnumber);
if(mole != undefined){
$('.moles').hide();
mole.show();
}
}, 2000)
这将创建一个随机数,将其附加到id“mole”(例如:mole+2)并检查它是否已定义(存在)。如果是,则隐藏所有其他摩尔并显示所选摩尔(在我们的示例中为2)。这也将消除所有的if语句,并允许您增加或减少摩尔数,而无需为它们创建额外的检查
你可以看到它在这里工作
注意:忽略额外的html和css,这是为了调试目的。Moles 4-6无论如何都不会工作,因为它们包装在从未调用过的函数中。此外,您的随机数生成器正在创建4个从未使用过的数字。1-3有效吗?我让它创建额外的数字,这样有时就不会有额外的鼹鼠产卵,有时也会有。我忘了删除mole 4、5和6mole 1到3的额外函数,如果(randomnumber=“1”)->我认为应该使用==(比较运算符)。。。另外,你可以简化它,很多(不需要所有的if语句)…比如?我还有一个问题:为什么300毫秒的延迟不起作用?因为如果我只使用sya(show()),它可以工作,但是当我说(show().delay(300.hide())时,它在300毫秒内不会出现。=->==顺便说一句,不用担心。您试图在那里做的就是所谓的函数链接。延迟函数仅适用于“队列”中的其他函数,您需要一种变通方法来将显示和隐藏放置到该队列中。可以通过使用显示(0)和隐藏(0)来完成此操作。此信息取自以下一个非常好的答案:
setInterval(function(){
var randomnumber = 1 + Math.floor(Math.random() * 10);
$('#mole1').html(randomnumber);
var mole = $('#mole' + randomnumber);
if(mole != undefined){
$('.moles').hide();
mole.show();
}
}, 2000)