【问题标题】:access object variable from method javascript从方法 javascript 访问对象变量
【发布时间】:2015-01-19 16:54:51
【问题描述】:

我在访问对象方法中的数组时遇到问题。 虽然日志完美返回值,但以下行返回 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++;                
                    }

                }       
            )
        };

【问题讨论】:

  • 请说明您尝试访问它的两个地方。
  • 您确定您的代码中的其他地方没有错字,您将allRects 称为allRect
  • 变量 n 增加了两倍。对吗?
  • 为什么n变量存在。
  • an array within an object method? 您想要访问方法的本地数组这一事实表明它不应该是本地开始

标签: javascript snap.svg


【解决方案1】:

在这段代码中:

                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] 设置动画,依此类推。

【讨论】:

  • 确实,一定忽略了显而易见的事情,因为我本以为会出现越界异常...
  • @onkeldittmeyer JavaScript 中没有“越界”异常。
猜你喜欢
  • 2011-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2016-12-27
  • 1970-01-01
相关资源
最近更新 更多