Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 如何使用SetInterval函数和';如果';进行div';它会弹出吗?_Javascript_Jquery_If Statement_Random_Setinterval - Fatal编程技术网

Javascript 如何使用SetInterval函数和';如果';进行div';它会弹出吗?

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弹出。这是我的代码:(顺便说一下,这是我做的第一个游戏,所以这是一个愚蠢的问题:))

和我的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)

在比较中需要使用“==”(等于)运算符

如果(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)