Javascript 我试图计算循环中骰子的随机数,直到掷出一个双精度骰子。加载页面时没有发生任何事情
我试图计算循环中骰子的随机数,直到掷出一个双精度骰子。加载页面时没有发生任何事情。 这是我的密码Javascript 我试图计算循环中骰子的随机数,直到掷出一个双精度骰子。加载页面时没有发生任何事情,javascript,random,while-loop,Javascript,Random,While Loop,我试图计算循环中骰子的随机数,直到掷出一个双精度骰子。加载页面时没有发生任何事情。 这是我的密码 var roll1 = randomInteger(1,6); var roll2 = randomInteger(1,6); while(roll1 != roll2){ var roll1 = randomInteger(1,6); var roll2 = randomInteger(1,6); document.write(+roll1+ " - " +rol
var roll1 = randomInteger(1,6);
var roll2 = randomInteger(1,6);
while(roll1 != roll2){
var roll1 = randomInteger(1,6);
var roll2 = randomInteger(1,6);
document.write(+roll1+ " - " +roll2+ );
}
document.write("<br><br><b>Doubles obtained" );
var roll1=randomInteger(1,6);
var roll2=随机整数(1,6);
而(roll1!=roll2){
var roll1=随机整数(1,6);
var roll2=随机整数(1,6);
文件写入(+roll1+“-”+roll2+;
}
文件。写入(“
获得双倍”);
在没有看到randomInteger
函数的情况下,我必须假设两次声明相同的变量(roll1
和roll2
)会出现问题
我想试试这个:
var roll1 = randomInteger(1,6);
var roll2 = randomInteger(1,6);
while(roll1 != roll2){
roll1 = randomInteger(1,6); // <--- removed "var"
roll2 = randomInteger(1,6); // <--- removed "var"
document.write(+roll1+ " - " +roll2+ );
}
document.write("<br><br><b>Doubles obtained" );
var roll1=randomInteger(1,6);
var roll2=随机整数(1,6);
而(roll1!=roll2){
roll1=randomInteger(1,6);//我想这是因为document.write。它用
获得双打
,删除以前的任何文本。我更改了三件事:
Math.floor(Math.random()*6);
而不是randominger(1,6);
从文档中删除+
。写入(+roll1+“-”+roll2+;
使用writeln
而不是write
<head>
</head>
<body>
<h3>Script</h3>
<script language="javascript">
document.writeln("Start ..." +"<br>");
var roll1 = Math.floor(Math.random() *6);
var roll2 = Math.floor(Math.random() *6);
while(roll1 != roll2){
roll1 = Math.floor(Math.random() *6);
roll2 = Math.floor(Math.random() *6);
document.writeln(roll1+ " - " +roll2 +"<br>");
}
</script>
</body>
</html>
剧本
document.writeln(“开始…”+“
”);
var roll1=Math.floor(Math.random()*6);
var roll2=Math.floor(Math.random()*6);
而(roll1!=roll2){
roll1=Math.floor(Math.random()*6);
roll2=Math.floor(Math.random()*6);
document.writeln(roll1+“-”+roll2+“
”);
}
第三点似乎过时了:)……第二点也是(删除了它们)。从我的角度来看,可能有两件事:
document.write
document.write*
在[X]HTML的最新版本中已被弃用/取消(因为这是一种非常不安全的输出内容的方法)。如果您的决定完全基于“我什么都看不到”,这可能是因为浏览本身阻止了调用。(如果过度使用连接运算符(+
),则在中也会出现语法错误,这没有帮助)
randominger
我无法验证这是一个如何工作的函数,但我仍然会仔细检查返回值。(可能会对照我在下面提供的函数检查您的函数)
话虽如此,从我下面的情况来看,我看不出有什么理由不这样做:
函数日志(t){document.getElementById('db').innerHTML+=t+'\r\n';}
函数随机整数(l,h){
返回Math.floor(Math.random()*h)+l;
}
var roll1=随机整数(1,6);
var roll2=随机整数(1,6);
日志('1:'+roll1+';2:'+roll2);
while(roll1!=roll2){
var roll1=随机整数(1,6);
var roll2=随机整数(1,6);
日志('1:'+roll1+';2:'+roll2);
}
日志('获得双精度');
我知道已经一年了,但我相信这是获得你想要的东西的最简单方法:
var linebreak=“”;
var roll1=Math.floor(Math.random()*6)+1;
var roll2=Math.floor(Math.random()*6)+1;
var=真;
同时(滚动){
如果(roll1==roll2){
写(换行符+“加倍!你掷:“+roll1+”,“+roll2”);
滚动=假;
}
否则{
文件写入(换行符+“重新滚动…”+滚动1+,“+滚动2”);
var roll1=Math.floor(Math.random()*6)+1;
var roll2=Math.floor(Math.random()*6)+1;
};
};
losevar
在while
循环中。您可能正在中断范围。(收回这一点,看起来像是起重作业(尽管我仍然认为var
在某种程度上是不正确的/令人困惑的)。randomInteger()在哪里
函数?你在控制台中看到了什么?在文档中丢失+
符号。写,你也应该尝试控制台。log
而不是循环时,JavaScript在中没有明显的作用域。不要让不正确的注释影响你的答案。@FrédéricHamidi这正是我说的。请注意。如果这正是你所说的,那么我必须假设两次声明相同的变量是有问题的,这是没有意义的不要再想删除var
关键字就能解决问题了。在while
中重新定义这些变量毫无意义,正如你所说的,b/c在while循环中没有明显的作用域。嘘!请远离键盘。document.write
可以被多次调用;它不是与.innerHTML
相同(没有连接的多个赋值将清除以前的值)。虽然我很欣赏编辑,但附加的var
声明故意保留在代码段中(然后在后面的段落中调用)。但是很好看。;-)是的,它们被提升,但在循环的后续迭代中会发生什么。值是否得到正确更新?是的,它们是。如果我的原始注释是所有这些的根源,我很抱歉。我确实在此后不久进行了编辑,但重新声明对结果没有影响。您没有跨越范围边界,因此保留了行为。不,没有在没有看到所有相关代码的情况下,很难做出决定。奇怪的变量声明似乎是一个明显的选择。
var linebreak = "<p></p>";
var roll1 = Math.floor(Math.random() * 6) + 1;
var roll2 = Math.floor(Math.random() * 6) + 1;
var rolling = true;
while(rolling) {
if(roll1 === roll2) {
document.write(linebreak + "Doubles! You rolled: " + roll1 + ", " + roll2);
rolling = false;
}
else {
document.write(linebreak + "Rerolling... " + roll1 + ", " + roll2);
var roll1 = Math.floor(Math.random() * 6) + 1;
var roll2 = Math.floor(Math.random() * 6) + 1;
};
};