2012-10-21 43 views
-1

我在JavaScript中有一些代碼會存儲一些浮點數,但我似乎無法得到它打印出正確的數據,這裏是我的代碼片段,這是我有什麼問題。沒有數據打印出來

function Vector3(x,y,z){ 
    this.x = x; this.y = y; this.z = z; 
} 

function Edge(vec1, vec2){ 
    var vector1 = new Vector3(vec1.x,vec1.y,vec1.z); 
    document.write(vector1.x+ "," +vector1.y +"," + vector1.z+"<br>"); 
var vector2 = new Vector3(vec2.x,vec2.y,vec2.z); 
} 

var sqrVer = new Array(); 
sqrVer[1] = new Vector3(-1.0, 1.0, 1.0); 
sqrVer[2] = new Vector3(1.0, 1.0, 1.0); 
sqrVer[3] = new Vector3(-1.0, -1.0, 1.0); 
sqrVer[4] = new Vector3(1.0, -1.0, 1.0); 
sqrVer[5] = new Vector3(1.0, -1.0, -1.0); 
sqrVer[6] = new Vector3(1.0, 1.0, -1.0); 
sqrVer[7] = new Vector3(-1.0, 1.0, -1.0); 
sqrVer[8] = new Vector3(-1.0, -1.0, -1.0); 

var sqrEdge = new Array(); 
sqrEdge[1] = new Edge(sqrVer[1], sqrVer[2]); 


document.write(sqrVer[1].x + "<br>"); 
document.write(sqrEdge[1].vector1.x + "<br>"); 

什麼現在是打印出來是這樣的

-1.0, 1.0, 1.0, 
-1.0 

但是對於去sqrEdge並試圖打印出X線,沒有數據被寫入到屏幕???爲什麼是這樣?

回答

0

你的邊緣功能實際上並沒有創建和返回任何東西。這會導致程序在可以打印出來之前崩潰,因爲它會返回一個空對象(由於「new」),{} .vector1 = undefined和{} .vector1.x會引發錯誤。

要解決這個問題,請嘗試:

function Edge(vec1, vec2){ 
    this.vector1 = new Vector3(vec1.x,vec1.y,vec1.z); 
    this.vector2 = new Vector3(vec2.x,vec2.y,vec2.z); 
} 

我的建議是學習如何(在Firefox「開發者工具」在Chrome或Safari,或螢火蟲)使用JavaScript控制檯之一。

這會告訴你,當你有錯誤,你也可以使用console.log()而不是document.write(),它可以讓你發送自己的消息而不寫入頁面。

+0

乾杯,我剛纔看着它告訴我,X不能被讀取,這是爲什麼?我確實給了x值? – Canvas

+0

澄清的答案。 – Eric