2011-06-09 76 views
-2
var Obj = { 

    StateValues: ['AL','AK','AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI','ID','IL','IN','IA', 
    'KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND', 
    'OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY'], 

    getItemRow: function(itemValue) { 
    var myPosition=-1 
     for (i=0;i<this.StateValues.length;i++) { 
      if(this.StateValues[i]==itemValue) { 
      myPosition = i; 
      break; 
     } 
     } 
     return myPosition; 
    } 
} 

这段代码有什么问题。我是在宣布正确的方法。在我的对象中添加数组后,问题开始了。对象内的数组

+4

您是否收到错误?如果是的话,什么? – Matt 2011-06-09 14:35:28

+4

什么问题....? – 2011-06-09 14:36:03

+0

你打电话过得怎么样? – epascarello 2011-06-09 14:37:27

回答

3

您错误地使用了this。它指的是window(全局对象),而不是这个。尝试:

var Obj = { 

    StateValues: ['AL','AK','AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI','ID','IL','IN','IA', 
    'KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND', 
    'OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY'], 

    getItemRow: function(itemValue) { 
    var myPosition=-1 
     for (i=0;i<Obj.StateValues.length;i++) { 
      if(Obj.StateValues[i]==itemValue) { 
      myPosition = i; 
      break; 
     } 
     } 
     return myPosition; 
    } 
} 
+2

我已经运行了'alert(Obj.getItemRow('AZ'))',它使用'this'关键字很好。 – Genzer 2011-06-09 14:42:44

+0

@Genzer:你是对的 - 我最近遇到了这个问题,发现'this'没有工作。我不知道答案(实际上也没有问题),因为他的代码*确实有效。 – pimvdb 2011-06-09 14:52:00

2

你必须在最后一个缺少分号。

进行此更改后,申报语法上jslint.com检查出来(至少在我禁用检查凌乱空白等)。

但是,不要忘了申报ivar关键词,写Obj而非this

不知道所谓的“问题”,我们不能进一步评论。