JavaScript数组问题

时间:2010-11-03 17:13:14

标签: javascript arrays html5 canvas

这段代码似乎不起作用。

for(var b = 0; b < wallPoints.length-1; b++)  
{  
    wallPoints[b].xPos = wallPoints[b]-1;  
}  

function Point(x,y)  
{  
    this.xPos = x;  
    this.yPos = y;  
}

wallPoints是一个点数组

代码不会返回任何错误,只是让我的所有代码都停止执行。这是我第一次使用JavaScript,所以这可能是一个非常愚蠢的错误。

2 个答案:

答案 0 :(得分:3)

你想做什么 - 在x轴上将每个点移一个?您还需要在作业的右侧引用该属性。

for(var b = 0; b < wallPoints.length; b++)   
{   
    wallPoints[b].xPos = wallPoints[b].xPos - 1;   
}

或者您想将x轴从一个点传播到另一个点

for(var b = 1; b < wallPoints.length; b++)   
{   
    wallPoints[b].xPos = wallPoints[b-1].xPos;   
}

在后一种情况下,您需要弄清楚如何处理第一点。注意终止条件的变化(以及第二种情况下的开始条件)。

编辑:这是我的测试代码:

<html>
<head>
<title>Point</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    var wallPoints = new Array();
    wallPoints[0] = new Point(0,10);
    wallPoints[1] = new Point(600,10);
    wallPoints[2] = new Point(650,10);

    var content = $('#content');

    content.append('<h2>Before</h2>');

    for(var b = 0; b < wallPoints.length; b++)
    {
        content.append('<p> x = ' + wallPoints[b].xPos + ', y = ' + wallPoints[b].yPos + '</p>' );
        wallPoints[b].xPos = wallPoints[b].xPos-1;
    }
    content.append('<h2>After</h2>');

    for(var b = 0; b < wallPoints.length; b++)
    {
        content.append('<p> x = ' + wallPoints[b].xPos + ', y = ' + wallPoints[b].yPos + '</p>' );
    }

    function Point(x,y)
    {
        this.xPos = x;
        this.yPos = y;
    }
});
</script>
</head>
<body>
<div id="content">
</div>
</body>
</html>

答案 1 :(得分:0)

您正在指定一个等于点的X变量。不是一个选择:

for(var b = 0; b < wallPoints.length-1; b++)  
{  
    wallPoints[b].xPos = wallPoints[b]-1;  
}  

而不是试试这个:

for(var b = 0; b < wallPoints.length-1; b++)  
{  
    wallPoints[b].xPos = wallPoints[b].xPos - 1;
}