首页 > 解决方案 > 我在 JavaScript 中的 setBoard 函数的行和列变量中有一个未定义的值

问题描述

因此,我正在尝试使用 HTML、CSS 和 JavaScript 创建一个扫雷游戏。我的问题是,当我调用输入(存储一个函数)时,结果是我在 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;
}```

标签: javascriptdom

解决方案


在您的setBoard()函数中,您键入let columns = input[1]了 ,它试图访问input假设它是一个数组的第二个元素。如果您打算input()使用参数调用该函数1,您应该编写let columns = input(1).

如果您试图input()从它返回的数组中调用和访问第二个元素(第一个元素将有一个 index 0),您可以键入let columns = input()[1].


推荐阅读