- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我目前所拥有的。我对 javascript 很陌生。如何让这些骰子在 div 内按顺序滚动?比如只显示第一个随机数后才显示下一个随机数。
<html>
<style>
.numdiv{
height: 400px;
width: 200px;
border:solid 1px green;
float: left
}
</style>
<head>
<script>
function rollDice(){
var number1 = document.getElementById("number1");
var number2 = document.getElementById("number2");
var number3 = document.getElementById("number3");
var status = document.getElementById("status");
var d1 = Math.floor(Math.random() * 6) + 1;
var d2 = Math.floor(Math.random() * 6) + 1;
var d3 = Math.floor(Math.random() * 6) + 1;
var diceTotal = d1 + d2 + d3;
number1.innerHTML = d1;
number2.innerHTML = d2;
number3.innerHTML = d3;
status.innerHTML = "You rolled "+diceTotal+".";
if(diceTotal == 15){
status.innerHTML += "You Win!!";
}
}
</script>
</head>
<body>
<table>
<tr>
<td>
<div class="numdiv" id="number1">
0</div>
<div class="numdiv" id="number2">
0</div>
<div class="numdiv" id="number3">
0</div>
</td>
</tr>
<tr>
<td><button onclick="rollDice()"/>Generate Number</button></td></tr>
<tr>
<td><span id="status">0</span></td></tr>
</table>
</body>
</html>
最佳答案
您可以使用 setTimeout()
method延迟函数的执行,以便一次掷一个骰子:
function rollDice(){
var status = document.getElementById("status");
var nums = document.querySelectorAll(".numdiv");
var diceTotal = 0;
var current;
for (current = 0; current < nums.length; current++) {
nums[current].innerHTML = "?";
}
current = 0;
status.innerHTML = "Rolling...";
function rollNext() {
currentRoll = Math.floor(Math.random() * 6) + 1;
nums[current].innerHTML = currentRoll;
diceTotal += currentRoll;
current++;
if (current < nums.length) {
setTimeout(rollNext, 1000);
} else {
status.innerHTML = "You rolled " + diceTotal + ".";
if(diceTotal == 15){
status.innerHTML += "You Win!!";
}
}
}
setTimeout(rollNext, 1000);
}
.numdiv { height: 30px; width: 30px; border:solid 1px green; float: left; margin: 10px }
<table>
<tr>
<td>
<div class="numdiv" id="number1"></div>
<div class="numdiv" id="number2"></div>
<div class="numdiv" id="number3"></div>
</td>
</tr>
<tr>
<td><button onclick="rollDice()"/>Generate Number</button></td></tr>
<tr>
<td><span id="status">0</span></td>
</tr>
</table>
另请注意,我已经删除了您单独的 number1
、number2
和 number3
变量,而是使用单个变量 num
引用所有 .numDiv
div 元素的列表。这样您就可以轻松地更改要使用的骰子数量,而根本无需更改 JS(您只需添加或删除 .numDiv
元素)。
编辑:正如我在上面发布的那样,您澄清了您希望用户按下每个骰子的按钮,而不是延迟地自动掷出所有三个骰子。所以我想,也许像下面这样,在函数外部声明的变量中保留一个计数器和总数:
var statusSpan = document.getElementById("status");
var nums = document.querySelectorAll(".numdiv");
var diceTotal;
var current = 0;
function rollDice(){
if (current === 0) { // reset display
for (var i = 0; i < nums.length; i++)
nums[i].innerHTML = "?";
diceTotal = 0;
}
currentRoll = Math.floor(Math.random() * 6) + 1;
nums[current].innerHTML = currentRoll;
diceTotal += currentRoll;
if (++current < nums.length) {
statusSpan.innerHTML = "Current total: " + diceTotal + ".";
} else {
statusSpan.innerHTML = "You rolled " + diceTotal + ".";
if(diceTotal == 15){
statusSpan.innerHTML += "You Win!!";
}
current = 0;
}
}
.numdiv { height: 30px; width: 30px; border:solid 1px green; float: left; margin: 10px; text-align: center }
<table>
<tr>
<td>
<div class="numdiv" id="number1"></div>
<div class="numdiv" id="number2"></div>
<div class="numdiv" id="number3"></div>
</td>
</tr>
<tr>
<td><button onclick="rollDice()">Roll next die</button></td></tr>
<tr>
<td><span id="status">Ready to roll?</span></td>
</tr>
</table>
关于javascript - 如何一次掷一个骰子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40010074/
用 n 个骰子求滚动总和概率的最佳解决方案是什么?我正在通过查找来解决它 平均。 标准偏差。 x 以下数字的 z_score> x 上面数字的 z_score 将两者都转换为概率 从另一个中减去一个
我的教授要求我们编写一个程序: 使用循环模拟一对骰子的滚动一千次(这里我认为 for 循环会很有用)。 对于每次迭代,循环需要计算每个值从 2 到 12 的次数(这里我认为 if/else 语句适用)
我一周前才开始使用 python,现在我被掷骰子的问题困住了。这是我 friend 昨天发给我的问题,我自己也不知道怎么解决。 Imagine you are playing a board game
从头开始,用 2 个骰子重复第 4 部分。这次我们使用 10,000 而不是 1000。 每个骰子的数字可以为 1 - 6,因此 2 个骰子的总数必须在 2 - 12 的范围内。 您的输出将在 2 –
我想计算 n 个骰子的所有眼睛的总和与 s 面(编号从 1 到 s) 等于 t。我的语言是 Python 3。 我目前的方法几乎是一种尝试计数的解决方案,只适用于小数字(运行 probability(
我是一名优秀的程序员,十分优秀!