在JavaScript中生成带有随机数的按钮并插入DOM

时间:2019-01-20 19:39:36

标签: javascript dom random

嘿,我正在尝试做一个项目,却遇到一个问题。我生成了2个随机数和一个运算符-然后我得到了该方程式的结果并将其存储在数组中。我想将其他3个随机生成的数字添加到数组中(所有数字将显示在按钮上,用户将可以单击一个数字并找出其正确结果)。它仅适用于arry中的第一个数字,这是正确的结果。我没有努力推动其他3个数字。你知道怎么做吗?预先谢谢你!

window.addEventListener('load', function () {

    var rnum1 = generateRandomNumber1();
    var rnum2 = generateRandomNumber2();
    //pass the random numbers to the function   
    var data = generateRandomOperatorAndCorrectResult(rnum1, rnum2);
    //data=["+", [5]]
    var operator = data[0];
    var allResults = data[results];
    var mes = alert(allResults);


    document.querySelector("#text").textContent = "Kolik je " + rnum1 + operator + rnum2 + "?";
});

function generateRandomOperatorAndCorrectResult(num1, num2) {
    var operators = [{
        sign: "+",
        method: function (rnum1, rnum2) { return rnum1 + rnum2; }
    },
    {
        sign: "*",
        method: function (rnum1, rnum2) { return rnum1 * rnum2; }
    },
    {
        sign: "-",
        method: function (rnum1, rnum2) { return rnum1 - rnum2; }
    }];
    var results = [];

    var selectedOperator = Math.floor(Math.random() * operators.length);
    var randomOperator = operators[selectedOperator].sign;
    var correctResult = (operators[selectedOperator].method(num1, num2)); //pass the numbers to the methods
    results.push(correctResult);
    var randomResult = generateRandomResults(3);
    results.push(randomResult);
    //return multiple values
    return [randomOperator, [results]];
}


function generateRandomResults(nums) {
    for (var i = 0; i < nums; i++) {
        ((Math.floor(Math.random() * 400) + 1))
    }
}

1 个答案:

答案 0 :(得分:1)

您的问题与generateRandomResults函数有关,该函数应返回具有随机数的数组,但此刻仅计算而不将这些结果存储在任何地方。

相反,您将需要创建一个数组,并在生成随机数后将其返回:

function generateRandomResults(nums) {
    var randomNumbers = [];
    for (var i = 0; i < nums; i++) {
        randomNumbers.push((Math.floor(Math.random() * 400) + 1));
    }
    return randomNumbers;
}

这样,当检索函数的结果(代码中的var randomResult = generateRandomResults(3))时,变量将存储三个随机数的数组。这意味着您将拥有to concatenate您的randomNumbers数组,而不是将结果推送到您的results数组中。所以最后您的代码应该是:

...
results.push(correctResult);
var randomResults = generateRandomResults(3);
results.concat(randomResults);
return [randomOperator, [results]];
...