2011-06-09 43 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

不知道所謂的「問題」,我們不能進一步評論。