【问题标题】:JavaScript Dice Roll When Button Is Clicked [duplicate]单击按钮时JavaScript掷骰子[重复]
【发布时间】:2017-01-18 19:50:36
【问题描述】:

我正在尝试使用 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);

第一次加载页面时会显示随机数,但单击按钮时没有任何反应。当单击按钮而不是加载页面时,如何使它工作?谢谢。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    改用这个:

    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;
    

    【讨论】:

    • 感谢您的快速回答!现在可以了。
    • 感谢您的澄清。我明白为什么它现在不起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2021-04-07
    • 2012-02-29
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多