2012-10-21 41 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