我正在尝试使用Javascript制作一个简单的骰子滚轮,当点击该按钮时,该滚轮将显示1到6之间的随机数。
我有一个按钮:
<button id="roll">Click to Roll</button>
使用此脚本:
function diceRoll(min, max) {
var min = Math.ceil(min);
var max = Math.floor(max);
var roll = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(roll);
}
document.getElementById("roll").onclick = diceRoll(1, 6);
首次加载页面时会显示随机数,但单击按钮时没有任何反应。单击按钮时,如何在页面加载时使其工作?谢谢。
答案 0 :(得分:3)
请改用:
document.getElementById("roll").onclick = function() {
diceRoll(1, 6);
};
当前代码的问题是,当运行该行时,执行diceRoll(1, 6)
,然后将调用该函数的结果分配给onclick
处理程序。
您需要onclick
处理程序来代替每次单击按钮时可以调用的函数。所以上面我创建了一个新功能,当被调用时,又会调用diceRoll(1, 6)
。
如果有帮助,这段代码就等同于你现在正在做的事情(并希望揭示出错的原因):
// Call diceRoll and store its result (which is undefined, since
// the function returns nothing).
var result = diceRoll(1, 6);
// Now take that result (undefined) and assign it to the button's
// onclick handler. This makes onclick undefined too.
document.getElementById("roll").onclick = result;