У меня есть неопределенное значение в переменной строки и столбца для функции setBoard в JavaScript

#javascript #dom

#javascript #dom

Вопрос:

Итак, я пытаюсь создать игру minesweeper, используя HTML, CSS и JavaScript. Моя проблема здесь в том, что, когда я вызываю input (который хранит функцию), результатом является то, что я получаю неопределенное значение в функции setBoard для моих переменных строк и столбцов. Однако переменные строк и столбцов в функциях getDimensions не возвращают неопределенное значение, а вместо этого возвращают правильное значение, которое вводит пользователь.

 let dimensions;
let input = function getDimensions() {
    let rows, columns;

    rows = document.getElementById("boardRows").value; //The rows variable stores the number of rows that the user enters.
    columns = document.getElementById("boardColumns").value; //The columns variable stores the number of columns that the user enters.

    //This if-statement will run if there are: more than 30 rows, less than 4 rows, more than 30 columns, or less than 4 columns.
    if ((rows > 30) || (rows < 4) || (columns > 30) || (columns < 4)) {
        //An alert message is printed to the browser telling the user that the value(s) that they have entered are invalid.
        alert("ERROR! The number of rows are: "   rows   " and the number of columns are: "   columns   ". Please"  
            "enter your rows and columns between 4 and 40.");
    } else {
        dimensions = [rows, columns];
        alert(rows   " "   columns);
        return(dimensions);
    }

}

function setBoard() {
    let canvas = document.getElementById("canvas");
    let rows = input[0];
    let columns = input[1];
    alert("Here "   rows   " "   columns);
    canvas.height = columns * 20;
    canvas.width = rows * 20;
}```

  

Комментарии:

1. Какое именно сообщение об ошибке вы получаете в данный момент? cannot read property 'value' of null или что-то подобное?

2. Нет, сообщение об ошибке, которое я получаю: «Здесь не определено, не определено» Я говорю о функции setBoard. Вот откуда я получаю неопределенные значения.

3. input это функция, это не массив, у нее нет [0] или [1] свойств

4. Итак, как я могу извлечь возвращаемые значения из функции getDimensions? Возвращаемые значения в этой функции имеют тип array.

5. Вместо этого вызовите функцию или обратитесь к dimensions переменной

Ответ №1:

В вашей setBoard() функции вы ввели let columns = input[1] , которая пытается получить доступ ко второму элементу input , предполагая, что это массив. Если вы хотели вызвать input() функцию с аргументом 1 , вам следует написать let columns = input(1) .

Если вы пытались вызвать input() и получить доступ ко второму элементу из массива, который он возвращает (первый элемент будет иметь индекс 0 ), вы могли бы ввести let columns = input()[1] .