从方法 javascript 访问对象变量

access object variable from method javascript

我在访问对象方法中的数组时遇到问题。 虽然日志 returns 值完美,但以下行 returns 一个错误,即 allRect[n] 未定义。

我想它与可变可访问性有关,但它可以在一行中记录并拒绝在下一行中存在这一事实让我有点不知所措。

谢谢大家

        this.s = Snap('#'+id);
        var allRects = [];

        this.xPos = 0;
        var scale = vizWidth/locationSum(data);         

        ...


        //methods
        this.updateViz = function() {

            apiRequest('datasets', 164, 'json').done(   

                function(data){ 
                    var n = 0;


                    data = locationDataIntoArray(data);


                    for(i = 0; i< allRects.length; i++){
                        console.log(allRects[n]);

                        allRects[n].animate({ width:parseInt(data[i][2]), opacity:evaluateMachine(data[i][0])},3000);
                        n++;
                        allRects[n].animate({ width:parseInt(data[i][3]), opacity:evaluateTech(data[i][1])},3000);
                        n++;                
                    }

                }       
            )
        };

在此代码中:

                for(i = 0; i< allRects.length; i++){
                    console.log(allRects[n]);

                    allRects[n].animate({ width:parseInt(data[i][2]), opacity:evaluateMachine(data[i][0])},3000);
                    n++;
                    allRects[n].animate({ width:parseInt(data[i][3]), opacity:evaluateTech(data[i][1])},3000);
                    n++;                
                }

你在每次迭代中递增 n 两次。在 for 循环的中途,n 将超出数组的末尾。

第一次通过循环,当 in 均为零时,您将为 allRects[0] 设置动画。然后你增加 n 和动画 allRects[1],然后再次增加 n。因此,在第二次通过循环时,您将为 allRects[2]allRects[3] 设置动画,依此类推。