如何使用 SetInterval 函数和 'if' 使 div 弹出?
How do is use the SetInterval function and the 'if' to make div's pop up?
我有一个 Whack a mole 游戏的脚本,但我似乎无法通过使用随机数生成器让我的 div 在我想要的时候弹出。这是我的代码:(顺便说一句,这是我制作的第一款游戏,所以这可能是个愚蠢的问题:))
//minigame
setInterval(function() {
var randomnumber = 1 + Math.floor(Math.random() * 10);
if (randomnumber = "1") {
$('#mole1').show();
};
if (randomnumber = '2') {
$('#mole1').show();
};
if (randomnumber = '3') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '4') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '5') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '6') {
$('#mole1').show().delay(300).hide();
};
}, 200);
和我的 html 相关:
<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)
您需要在比较中使用“==”(等于)运算符。
if(randomnumber == 2)
(如果随机数等于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 语句,并允许您增加或减少痣的数量,而无需为它们创建额外的检查。
你可以看到它在这里工作https://jsfiddle.net/ezs00xw0/
注意:忽略多余的html和css,这是为了调试目的。
我有一个 Whack a mole 游戏的脚本,但我似乎无法通过使用随机数生成器让我的 div 在我想要的时候弹出。这是我的代码:(顺便说一句,这是我制作的第一款游戏,所以这可能是个愚蠢的问题:))
//minigame
setInterval(function() {
var randomnumber = 1 + Math.floor(Math.random() * 10);
if (randomnumber = "1") {
$('#mole1').show();
};
if (randomnumber = '2') {
$('#mole1').show();
};
if (randomnumber = '3') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '4') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '5') {
$('#mole1').show().delay(300).hide();
};
if (randomnumber = '6') {
$('#mole1').show().delay(300).hide();
};
}, 200);
和我的 html 相关:
<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)
您需要在比较中使用“==”(等于)运算符。
if(randomnumber == 2)
(如果随机数等于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 语句,并允许您增加或减少痣的数量,而无需为它们创建额外的检查。
你可以看到它在这里工作https://jsfiddle.net/ezs00xw0/
注意:忽略多余的html和css,这是为了调试目的。