簡體   English   中英

javascript中的類型錯誤:無法讀取未定義的屬性

[英]Type Error in javascript: Cannot read Property of undefined

我有一個像這樣的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;
}

錯誤提示:

無法讀取未定義的屬性“ 5”。

我已經使用console.log語句進行了檢查,並且上面的所有變量都在獲取期望值。

我知道什么是Type Error,但不確定它在哪里中斷。

**編輯:**這是完整的腳本:

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;
}

這行:

window.onload = new newCard;

是:

  1. 調用newCard作為構造函數(不是)
  2. 將由此創建的對象分配給onload

由於您在newCard調用newCard ,因此它將在到達下一行之前運行:

var usedNums= new Array(76);

因此,當您嘗試從中讀取usedNums時,它是未定義的。

您需要將newCard 函數分配為加載處理程序。 所以不要調用它:

window.onload = newCard;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM