【问题标题】:Generating and checking random numbers in JavaScript在 JavaScript 中生成和检查随机数
【发布时间】:2015-05-28 04:24:21
【问题描述】:

我在使用 JavaScript 时遇到了一些问题。 到目前为止,我有这个代码:

<!DOCTYPE html>
<html>
<body>

<p>This program generates random numbers from 100 to 999.</p>

<button onclick="maingen()">Start</button> <-- Here's the FUNCTION OF FUNCTIONS..It should generate 3 digits, but only generates 1 :(

<p id="numbers"></p>

<script>
function generate1() {
    var a = Math.floor((Math.random() * 9) + 1);
    document.getElementById("numbers").innerHTML = a; <--generating the first digit (from 1 to 9)
}

function generate2() {
    var b = Math.floor((Math.random() * 9) + 0);
    document.getElementById("numbers").innerHTML = b; <--generating the second digit (from 0 to 9)
}

function generate3() {
    var c = Math.floor((Math.random() * 9) + 0);
    document.getElementById("numbers").innerHTML = c; <--generating the third digit (from 0 to 9)
}
function maingen(){
    generate1();
    generate2();
    generate3();
}


</script>

</body>
</html>

而且它不像我想要的那样工作。它应该生成一个从 100 到 999 的随机数。

(我正在生成单独的数字,因为稍后我需要检查该数字中是否有相同的数字(例如 222)。

那么我做错了什么?任何形式的帮助都会很好。谢谢。

【问题讨论】:

  • 您在每个函数调用中覆盖 innerHTML 属性,而您想追加它。将innerHTML = 更改为innerHTML +=

标签: javascript function random numbers


【解决方案1】:

您可以在每个函数中使用 += 来做到这一点,或者您可以进一步简化它。

function generate1() {
    return Math.floor((Math.random() * 9) + 1);
}

function generate2() {
    return Math.floor((Math.random() * 9) + 0);
}

function generate3() {
    return Math.floor((Math.random() * 9) + 0);
}

function maingen() {
    var a = generate1();
    var b = generate2();
    var c = generate3();

    document.getElementById("numbers").innerHTML = a + '' + b + '' + c;
}

你也可以这样做

function generate_rand() {
    return Math.floor((Math.random() * 9));
}

function maingen() {
    var a = generate_rand() + 1;
    var b = generate_rand();
    var c = generate_rand();

    document.getElementById("numbers").innerHTML = a + '' + b + '' + c;
}

【讨论】:

  • 谢谢,这真的很有用:)
【解决方案2】:

不确定这是否是您的解决方案,但看起来函数拼写错误。我明白了:

function generuoti1() {
    var a = Math.floor((Math.random() * 9) + 1);
    document.getElementById("numbers").innerHTML = a; <--generating the first digit (from 1 to 9)
}

function generuoti2() {
    var b = Math.floor((Math.random() * 9) + 0);
    document.getElementById("numbers").innerHTML = b; <--generating the second digit (from 0 to 9)
}

但是你的主要功能是调用不同的功能:

function maingen(){
    generate1();
    generate2();
    generate3();
}

我发现其中一个函数拼写正确,所以这可能就是您只看到 1 个数字的原因。尝试修复 generate1() 和 generate2() 的函数名称。

然后如 cmets 中所述,将您的 innerHTML 附加到 += 而不是 =

【讨论】:

  • 嘿嘿' 对不起,这些功能最初是用我的语言写的,我在这里发布时未能更改所有名称。但是,在我原来的程序中,名称是正确的。所以我想这可能是 insidenerHTML 的问题。因为我是 JS 新手。所以我对它的作用没有什么经验。
  • 是的,我想到了类似的东西 :) 尝试使用 += 附加到 innerHTML 而不是重新分配。 += 将添加到现有的内容中,就像将数值聚合在一起一样!
  • 谢谢,成功了! :) 还有一个问题。如何每次都重新启动此功能?因为现在它会生成数字......当我再次按下生成时,它会在顶部生成。例如:125
  • 尝试使用 3 个 s 而不是 id 为 'a'、'b'、'c' 的 p 并将值单独传递给每个 span,而不是传入

  • 非常感谢您为帮助您解决这个问题提供支持;)
猜你喜欢
  • 1970-01-01
  • 2016-01-26
  • 2014-05-10
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多