Генерация кнопок со случайными числами в JavaScript и вставка в DOM - PullRequest
0 голосов
/ 20 января 2019

Эй, ребята, я пытаюсь сделать один проект, и у меня есть одна проблема.Я сгенерировал 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 голосов
/ 20 января 2019

Ваша проблема связана с функцией 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) в вашем коде) переменная будет хранить массив из трех случайных чисел.Это означает, что вместо помещения результатов в ваш массив results у вас будет для объединения вашего массива randomNumbers.Итак, наконец ваш код должен быть:

...
results.push(correctResult);
var randomResults = generateRandomResults(3);
results.concat(randomResults);
return [randomOperator, [results]];
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...