我正在尝试重新编码用于智能电视的数独游戏。我想找到拼图在开始时没有填充的空单元格。我宣布了一个二维的aray
var emptyCellsArray =new Array(9);
emptyCellsArray[0] = new Array();
emptyCellsArray[1] = new Array();
emptyCellsArray[2] = new Array();
emptyCellsArray[3] = new Array();
emptyCellsArray[4] = new Array();
emptyCellsArray[5] = new Array();
emptyCellsArray[6] = new Array();
emptyCellsArray[7] = new Array();
emptyCellsArray[8] = new Array();
编写函数
function fillEmptyCellsArray() {
for ( var i= 1 ; i<=9; i++) {
for (var k=1 ; k<=9; k++) {
emptyCellsArray[i][k] = 0;
}; //k end
}; //i end
for ( var i= 1 ; i<=9; i++) {
var flag = 0;
for (var k=1 ; k<=9; k++) {
if ( !(document.getElementsByName(i+'_'+k)[0].value == "" ) ) {
//add this cell to the array
emptyCellsArray[i][flag] = 1;
flag++;
} //end if
}; //k end
}; //i end
alert("XX------" + emptyCellsArray[0][0] );
}; //function end
然后调用函数。
$(document).ready(function () {
fillEmptyCellsArray();
});
但我收到此错误输出。
错误明细:TypeError:document.getElementsByName(i +“_”+ k)[0]未定义
来自这条线---&gt; if(!(document.getElementsByName(i +'_'+ k)[0] .value ==“”)
我不是亲,我无法理解。我的错是什么?我认为问题出在声明部分。任何人都可以开导我吗?
第二个版本现在所有数组都填充了1的
function fillEmptyCellsArray() {
for ( var i=0 ; i<9; i++) {
for (var k=0 ; k<9; k++) {
emptyCellsArray[i][k] = 0;
}; //k end
}; //i end
for ( var i= 0; i<9; i++) {
for (var k=0 ; k<9; k++) {
if ( !(document.getElementsByName(i+'_'+k)[0].value == "" ) ) {
//add this cell to the array
emptyCellsArray[i][k] = 1;
} //end if
}; //k end
}; //i end
for ( var i=0 ; i<9; i++) {
for (var k=0 ; k<9; k++) {
alert ( emptyCellsArray[i][k] );
}; //k end
}; //i end
}; //功能结束
答案 0 :(得分:0)
现在你的示例名称从0开始,你的循环从1开始。你有9_9元素还是最后一个8_8。
我猜你真的希望你的循环看起来像这样
for ( var i= 0 ; i<9; i++) {
var flag = 0;
for (var k=0 ; k<9; k++) {