JavaScript:随机num函数始终获得相同的输出

时间:2018-10-14 20:47:54

标签: javascript random

我有以下代码:

var lives = 10;
var score = 0;
var input = $('#input');
var board = $('#board');
var validate = $('#validate');

function randomNum(min, max) {
    return Math.random() * (max - min) + min;
}

var levelOne = (randomNum(0, 999));
var levelTwo = (randomNum(999, 1999));

$('#generate').click(function () {
    if (score > 1) {
        board.html(levelOne);
        console.log(levelOne)
        setTimeout(function () {
            board.fadeOut();
        }, 3000);
    } else {
        board.html(levelTwo);
        console.log(levelTwo)
        setTimeout(function () {
            board.fadeOut();
        }, 3000);
    }
});

第一个数字将按预期方式输出它,但是如果我继续生成数字,则日志会说它是相同的数字,而且我在屏幕上看不到它(超时不能正常工作吗?)。我已经在Objective-C中完成了这个游戏,但是现在在JS中我的逻辑中缺少了一些东西。有人可以给我提示吗?

编辑:我已经尝试过了

$('#generate').click(function () {
    var levelOne = (randomNum(0, 999));
    if (score > 1) {
        board.html(levelOne);
        console.log(levelOne)
        setTimeout(function () {
            board.fadeOut();
        }, 3000);
    } // etc
}

,也位于if中。我不明白为什么我总是得到相同的数字。

1 个答案:

答案 0 :(得分:1)

您正在将变量levelOnelevelTwo缓存在点击处理程序之外,因此仅生成一次随机数,如果您希望重复生成它们,请将这些行放在点击处理程序中像这样:

var lives = 10;
var score = 0;
var input = $('#input');
var board = $('#board');
var validate = $('#validate');

function randomNum(min, max) {
    return Math.random() * (max - min) + min;
}

$('#generate').click(function () {
    if (score > 1) {
        var levelOne = randomNum(0, 999);
        board.html(levelOne);
        console.log(levelOne)
        setTimeout(function () {
            board.fadeOut();
        }, 3000);
    } else {
        var levelTwo = randomNum(999, 1999);
        board.html(levelTwo);
        console.log(levelTwo)
        setTimeout(function () {
            board.fadeOut();
        }, 3000);
    }
});