【问题标题】:JavaScript array problemJavaScript 数组问题
【发布时间】:2011-05-04 15:07:39
【问题描述】:

这段代码似乎不起作用。

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,所以这可能是一个非常愚蠢的错误。

【问题讨论】:

  • 检查这一行wallPoints[b].xPos = wallPoints[b]-1;
  • 请显示wallPoints的代码。
  • 'wallPoints = new Array(); wallPoints[0] = 新点(0,10); wallPoints[1] = 新点(600,10); wallPoints[2] = new Point(650,10);'
  • 当前初始化该数组的最佳实践方法:var wallPoints = [new Point(0,10), new Point(600,10), new Point(650,10)];
  • 你有没有成功解决过这个问题?您还需要这方面的帮助吗?

标签: javascript arrays html canvas


【解决方案1】:

你想做什么——在 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>

【讨论】:

  • 对不起,这是我最初在我的代码中的内容,但我在这里输入时搞砸了。代码还是不行。
  • @Daniel:最好发布您已按书面方式运行并遇到问题的真实代码。您重新输入的代码可能不会出现同样的问题。正如这个答案所示,它也可能有其他问题。
  • @daniel -- 我已经测试了上面的代码(添加了一些内容以便我可以看到它正在工作),它似乎没问题。 firefox/firebug 是否在控制台中向您显示任何内容?如果你没有 firefox/firebug,你真的应该得到它们。这对调试 javascript 问题有很大帮助。
  • @tvanfosson ~ 我认为你在他的问题上投入的时间比他还多。
  • @drachenstern -- 剪切和粘贴,剪切和粘贴。已经设置了模板测试文档会有所帮助。
【解决方案2】:

您正在分配一个等于点的 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;
}  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2021-09-09
    • 2022-01-18
    • 2013-05-18
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多