#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]
.