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; }; };
    lose
    var
    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;
        };
    };