我有以下代码:
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
中。我不明白为什么我总是得到相同的数字。
答案 0 :(得分:1)
您正在将变量levelOne
和levelTwo
缓存在点击处理程序之外,因此仅生成一次随机数,如果您希望重复生成它们,请将这些行放在点击处理程序中像这样:
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);
}
});