对象内的数组

时间:2011-06-09 14:33:07

标签: javascript

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;
    }
}

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

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

最后你的分号丢失了。

进行此更改后,声明语法会在jslint.com上签出(至少当我禁用检查杂乱的空格等时)。

但是,请不要忘记使用i关键字声明var并撰写Obj而不是this

在不知道所谓的“问题”的情况下,我们无法进一步发表评论。