我正在寫一個帶有兩個子函數的函數:一個用於從表單中的兩個值打印二維數組,另一個用於打印出二維數組。在這一點上,我一直試圖使用整數值的變量來填充二維數組,但它們沒有被正確填充。 min變量似乎在函數中的值爲0,而不是正在傳遞的值。在JavaScript中未正確填充和未定義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
}
你可以創建你有問題的小提琴,上面的代碼是不完整的,我們需要的HTML,以及整個javascript函數。 – logikal
嚴格模式下不允許條件內的函數聲明,而非嚴格模式下的函數聲明可能會在不同的瀏覽器中產生不同的結果。 – Oriol