Проблема с массивом JavaScript - PullRequest
1 голос
/ 03 ноября 2010

Этот бит кода, похоже, не работает.

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 ]

3 голосов
/ 03 ноября 2010

Что вы пытаетесь сделать - сдвинуть каждую точку на единицу по оси 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;   
}

InВ последнем случае вам необходимо выяснить, что делать с первым пунктом.Обратите внимание на изменение условия завершения (и условия запуска во втором случае).

РЕДАКТИРОВАТЬ : Вот мой тестовый код:

<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>
0 голосов
/ 03 ноября 2010

Вы присваиваете переменную 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;
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...