我正在编写一个带有两个子函数的函数:一个用于从表单中的两个值打印二维数组,另一个用于打印出二维数组。此时,我一直在尝试使用带有整数值的变量来填充2D数组,但它们没有被正确填充。 min变量似乎在函数中的值为0而不是传递的值。
无论如何,在我创建2D数组之后,我尝试测试打印2D数组'twoDarray',但是它是未定义的?
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
if (xValue <= yValue)
{
/* Draw out the multiplication table. */
function gen2Darray(min, max)
{
var lengthOf2Darray = (max - min);
var twoDarray = new Array(lengthOf2Darray);
for (var i = 0; i < lengthOf2Darray; i++)
{
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++)
{
twoDarray[i][j] = ((min + i) * (min + j)); // only takes i
}
}
}
gen2Darray(xValue, yValue);
function print_2d_string_array (array)
{
// print twoDarray, but twoDarray undefined here
}
我创建了一个jsfiddle帐户,但它在网站上的工作方式不同:http://jsfiddle.net/imparante/5yTEv/。
修正:
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
var lengthOf2Darray = (yValue - xValue);
var twoDarray = new Array(lengthOf2Darray);
if (xValue <= yValue) {
/* Draw out the multiplication table. */
function gen2Darray(min, max) {
// var lengthOf2Darray = (max - min);
// var twoDarray = new Array(lengthOf2Darray);
for (var i = 0; i < lengthOf2Darray; i++) {
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++) {
twoDarray[i][j] = ((min + i) * (min + j));
$("#table").append(twoDarray[i][j] + " ");
}
}
return twoDarray;
}
gen2Darray(xValue, yValue);
function print_2d_string_array(array){
// print twoDarray
}
答案 0 :(得分:2)
您在twoDarray
上未定义,因为数组已在gen2Darray()
内声明并创建,但您尝试从print_2d_string_array()
访问该数组。
如果您将var twoDarray = new Array();
移至可以解决未定义错误的xValue
和yValue
声明。
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
var lengthOf2Darray;
var twoDarray = [];
if (xValue <= yValue){
/* Draw out the multiplication table. */
gen2Darray(xValue, yValue);
print_2d_string_array(twoDarray);
}
function gen2Darray(min, max){
lengthOf2Darray = (max - min);
twoDarray = [lengthOf2Darray];
for (var i = 0; i < lengthOf2Darray; i++){
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++){
twoDarray[i][j] = ((min + i) * (min + j)); // only takes i
}
}
}
function print_2d_string_array(array){
console.log(array);
}
}
答案 1 :(得分:0)
函数的声明有点错误,函数gen2Darray实际上并没有返回任何内容,因此变量twoDarray只能在函数范围内使用。
请在此处查看固定代码:http://jsfiddle.net/CC5vP/
我将两个函数移出main函数声明,然后在gen2Darray(min, max)
它似乎正常工作,您需要修改print_2d_string_array(a)
以显示数据,而不是将其记录到控制台。