javascript IF嵌套在FOR循环中而不是过滤结果

时间:2011-07-22 22:50:41

标签: javascript canvas if-statement for-loop

我有一个for循环,用于从数组中绘制东西到画布。该数组包含一堆变量。

这些变量包含firstNamelastNameteam等定性值。

我知道变量设置正确,因为我使用它们的其他函数运行正常。但是,我有一个for循环,假设只有在team ='blue'时才在画布上绘制圆圈。

问题在于它将它们全部识别为“蓝色”并将它们全部拉出来,而实际上只有少数是“蓝色”而其他都是“红色”,“绿色”等。

这是代码:

            ctx.fillGroups = function(g){
                for ( var i=0; i<allSeating.length; ++i ){
                    if (allSeating[i.team]=g){
                        ctx.beginPath();
                        ctx.fillPerson(allSeating[i]);
                        //alert(allSeating[i.team]);
                    }
                }
            }

alert()处于活动状态时,我可以看到它认为它们都是蓝色的。

我猜测问题在于:if (allSeating[i.team]=g)但我似乎无法让它发挥作用。 allSeating[i.team]=g的检查是否需要在其他地方进行?但是,为什么它认为他们都是blue团队呢?

更新:此处仍未使用的是演示http://jsfiddle.net/8ryvH/1/

2 个答案:

答案 0 :(得分:4)

问题是=设置变量...使用allSeating[i.team]===g

正在进行的是您为g中的每个元素分配allSeating[i.team]allSeating=运算符在JavaScript中不会像在VB或SQL中那样执行相同的操作 - 在这些语言中x = y是等效性测试或赋值,具体取决于上下文。在JavaScript(以及我能想到的大多数其他语言)中,=仅用于赋值,而==(以及JavaScript中的===)用于测试相等性。

==执行类型转换以检查相等性,而===则不行。 ("1" == 1 // true"1" === 1 // false

答案 1 :(得分:3)

allSeating[i.team]=g不是检查:它是一个赋值语句。

allSeating[i.team]==g呢? (我错过了什么吗?)

Mozilla Developer's Network JavaScript Documentation对于这类事情来说是一个很好的资源。

<强>更新

如其他地方所述,此处的内容多于====

我们在聊天中注意到allSeating[i].team === g可能是您想要评估的内容,但事情仍然没有加起来。

我认为seat对象是问题,或者更确切地说是它的实例化。

该定义具有八个属性,但您的实例化只有

fillStyle属性添加值,如下所示,为我纠正了问题,allSeating[i].team === g现在评估为真。

var markTwain = new Seat(758, 180, 9,填充样式下,"Mark", "Twain", 6207, "red");

如果你遇到麻烦,请告诉我。