2014-03-28 51 views
0

我正在製作一個html5 javascript遊戲(不是用畫布),我需要一個類用於我的對象。該類是DPixel,所有對象都存儲在一個名爲grid的數組中。這裏是類:Javascript對象在訪問屬性時變成undefined

var grid = new Array(); 
function DPixel(data, x, y, node) { 
    this.xpos = x; 
    this.ypos = y; 
    this.elem = node; 
    this.type = data[0]; 
    /*The pixel will transfer colors as normal*/ 
    if (this.type === "normal") { 
     this.type = "normal"; 
     this.red = data[1]; 
     this.green = data[2]; 
     this.blue = data[3]; 
    } 
    /*The pixel will not transfer colors to other pixels*/ 
    else if (this.type === "border") { 
     this.type = "border"; 
     this.red = 224; 
     this.green = 210; 
     this.blue = 54; 
    } 
} 

數組的實際人口處於設置功能,不會被調用,我測試過,一切都很好在那裏。

function setup() { for(var x = 0; x < gridSize; x++) { for(var y = 0; y < gridSize; y++) { var red = Math.floor(Math.random()*256); var green = Math.floor(Math.random()*256); var blue = Math.floor(Math.random()*256); totalRed += red; totalGreen += green; totalBlue += blue; $("#grid").append("<div></div>"); $("#grid div:nth-child(" + (x * gridSize + y + 1) + ")").css("background-color", "rgb(" + red + "," + green + "," + blue + ")"); grid[grid.length] = (new DPixel(["normal", red, green, blue], x, y, $("#grid div:nth-child(" + (x * gridSize + y + 1) + ")"))); } } }

我從Chrome中得到的錯誤是:「遺漏的類型錯誤:無法讀取屬性未定義‘類型’」在它運行每秒幾次我的更新方法。

我曾嘗試的console.log()在dpixel變量,和鉻打印的所有它的屬性,因爲它通常會。但是當我嘗試訪問一個屬性時,它給了我錯誤。這對某個人來說似乎很明顯,但是當我花費數小時調試時,我必須跳過某些東西,所以不要害羞!

+0

你粘貼了一半的代碼。你在哪裏定義equlized,gridSize和grid?這就是你的問題所在。 – mpm

+0

你在哪裏填充dpixel?你正試圖從數組中獲取它,但是你在哪裏實際創建它並將它推到數組? – webdev

+0

很抱歉忘記了添加該零件。 –

回答

0

我發現了小毛病。像往常一樣,這是我的弱點,數學。在我定義dpixel和顏色變量的行上,我不需要向索引添加1。我的數組已經默認存儲索引爲0-224的變量,所以基於0的循環是可以的。 我懷疑最後一個元素是給我的錯誤,但我無法證明它儘管我記錄每個元素來檢查它是否是未定義的。