JavaScript 中的类型错误:无法读取未定义的属性
2015-04-17
494
我有一个像这样的 javascript 函数:
var usedNums= new Array(76);
function setSquare(thisSquare)
{
var currSquare = "square"+ thisSquare;
var colPlace = new Array(0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4);
var colBasis = colPlace[thisSquare] * 15;
var newNum;
do{
newNum = colBasis + getNewNum() + 1;
}while(usedNums[newNum]); //UnCaught TypeError here
usedNums[newNum] = true;
document.getElementById(currSquare).innerHTML = newNum;
}
错误显示:
Can not read property '5' of undefined.
我已经使用 console.log 语句进行了检查,并且上述所有变量都获得了预期值。
我了解类型错误是什么,但不确定它在哪里中断。
**编辑:**这是完整的脚本:
window.onload = new newCard;
var usedNums= new Array(76);
function newCard()
{
if(document.getElementById){
for(var i =0; i<24;i++)
{
console.log("Value of I is " + i);
setSquare(i);
}
}else{
alert("Sorry, your browser does not support this script");
}
}
function setSquare(thisSquare)
{
console.log("thissquare" + thisSquare);
var currSquare = "square"+ thisSquare;
console.log("currsquare" + currSquare);
var colPlace = new Array(0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4);
console.log("colplace" + colPlace);
var colBasis = colPlace[thisSquare] * 15;
console.log("colbasis"+ colBasis);
var newNum;
do{
newNum = colBasis + getNewNum() + 1;
console.log("new nUM" + newNum);
}while(usedNums[newNum]);
usedNums[newNum] = true;
document.getElementById(currSquare).innerHTML = newNum;
}
function getNewNum()
{
var a = Math.floor(Math.random() * 15);
console.log("random number" + a);
return a;
}
1个回答
此行:
window.onload = new newCard;
是:
-
将
newCard
作为构造函数调用(但实际上不是) -
将从中创建的对象分配给
onload
由于您在此处调用
newCard
,因此它会在您到达下一行之前运行:
var usedNums= new Array(76);
因此,当您尝试读取
usedNums
时,它是未定义的。
您需要将
newCard
函数
指定为您的加载处理程序。因此,不要调用它:
window.onload = newCard;
Quentin
2015-04-17